hdu 1004 let the ballon rise

断了今生、忘了曾经 提交于 2019-12-03 12:20:08

这一题相对前面两题要简单了许多,很容易想到用map,但是我还是不太适应oj思维,这是我一开始的代码,还没能做出来

#include<iostream>
#include<cstring>
#include<nap>

using namespace std;

int main()
{
int count = 0;
int i = 0;
string s;
cin >> count;
while(1)
{
if(count != 0)
{
map<int , string> m;
for(i = 0 ; i < count ; i++)
{
cin >> s;
int k = 10000;
for(auto a = m.begin() ; a != m.end() ; a++)
{
if(a -> second.compare(s) == 0)
{
k = a -> first;
break;
}
}
if(k != 10000)
{
m.insert(std::make_pair(1 , s);
}
else
{
m.insert(std::make_pair((a -> first)++ , s));
}
cout << m.end() -> second << endl;
}
else
return 0;
}
}
return 0;
}

问题在于,做oj题没必要存储数据,可以在读入数据的同时就进行计算过程了,还有就是对map的属性还不是很了解,所以做了很多无用功

这是之后的代码(ac)

#include<iostream>
#include<cstring>
#include<map>

using namespace std;

int main()
{
int t = 0;
while(cin >> t && t != 0)
{
map<string , int> m;
string s , s1;
int max = 0;
int i = 0;
for(i = 0 ; i < t ; i++)
{
cin >> s;
m[s]++;
if(m[s] > max)
{
max = m[s];
s1 = s;
}
}
cout << s1 << endl;
}
return 0;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!