-
,0));
你在这里有一个错误。
你应该先在地图中寻找 s,然后你就找不到它了,0));
因此,如果在地图中找不到 s,则应添加一句话
另外,在输出结果的时候,应该要遍历地图才能找到最大的,直接选择最后一个,这显然是行不通的。
map需要很多时间,你先纠正一下我上面的一些错误,如果变成tle,你应该考虑使用trie tree来做。
-
#include
#include
#include
using namespace std;
int main()
int t;
string s;
while(cin>>t &&t)
map map1;
map ::iterator pos;
string temp="";
int max=0;
for(int i=0; i>s;,0));
map1[s]++
pos=;pos--;
您的输出是 map1 中的最后一个,而不是数字最大的输出。
应该设置一个 max,记录当前字数最高的那个,最后输出将直接为 *if(map1[s]>max)。
max=map1[s];
temp=s;
cout
-
abaa
B:你对这个数据说的不对,我对STL一无所知,你自己看看吧。
尝试一下,你应该得到结果。
-
现在我们知道了起点 m 和终点 n,我们现在需要找到一个一般规则来尽快将 m 变成 n。
从图中可以看出,假设起点位于三角形的顶部,例如 1、2、4、5、7、9 等
那么从它到它下面的某一层点的距离是相同的,比如 1 到 2 和 1 到 4。 例如,2 到 10 和 2 到 12 和 2 到 14。 等一会。
根据这个定律,我们可以想象,如果 n 在以 m 为顶点的三角形下方,那么只要找出中间有多少层,问题就解决了。
如果 m 不是三角形的顶点,我们可以找到 m 所在的最小三角形,例如 6 是 2,8 是 4,13 是 7......
如何判断它是否低于某个点,我们首先知道终点n的值,我们可以计算出它所在的层数。
然后我们知道 m 和 n 之间层数的差异,我们可以计算出顶点的左右边界,以及如何判断它。
如果你在那里,模式很容易找到。 如果没有,则在左右边界中找到最近的边界点 n 并计算差值,即额外的步数加上到该图层的步数。
如果要找到一个模式,假设顶点 f(x) 在 x 层中,那么它与下一层 x+1 层的右边界是 f(x)+2*x-1,左边界是 f(x)+2x+1,依此类推,从顶点到边界的步数每隔一层加 2。
当然,你也可以找到通用表达式,我不会那样做。
纯手工玩,可能表达不清,可以一起**。
-
在那个**上,你想输出最短的通道,例子是6 12
也就是说,6-》7-》13-》12,通道3或6-》5-》11-》12,通道也是3
1 如果电脑没有安装恶意软件,或者上网时产生了恶意程序,建议使用腾讯电脑管家等软件清理垃圾,检查并杀死恶意软件,完成后重启电脑,就有可能解决。 >>>More