开个博客来立flag
认认真真的打ACM
虽然感觉很后悔,应该早一点开始的
不过现在开始干活,应该也为时不晚吧
ACM就像是一道大关卡
每次不管是别人觉得多简单的题目
我都很难AC
难过
直到现在
这个还是runtime error
#include<stdio.h>
#include<iostream>
#include<map>
#include<string>
using namespace std;
ostream&operator<<(ostream & o, const pair<string, string>&p)
{
o << p.first << endl;
return o;
}
int main()
{
typedef map<string, string> m ;
m pairs;
m::iterator i;
char a[66], b[66], x[66],c[100];
while(gets_s(c) && c[0]!='\0')
{
sscanf_s(c,"%s %s", a, b);
pairs[b] = a;
}
while (gets_s(x) && x[0]!='\0')
{
/*sscanf_s(x, "%s", x);
if (pairs.find(x) != pairs.end())
{
printf("%s\n", pairs[x]);
}
else
printf("eh\n");*/
sscanf_s(c, "%s", x);
if (pairs[x] != "\0") ///int初始是0 string为'\0'
{
cout << pairs[x] << endl;
}
else
{
cout << "eh" << endl;
}
}
system("pause");
return 0;
}
看了其他人的代码
#include <iostream>
#include <map>
#include <cstdio>
#include <string>
using namespace std;
int main()
{
char Key[66], Find[66];
char str[66];
map<string,string>mp;
while (gets(str)&&str[0]!='\0') ///空行的控制
{
sscanf(str,"%s %s",Key,Find); ///sscanf按格式从a读串
mp[Find]=Key;
}
while (gets(str)&&str[0]!='\0')
{
sscanf(str,"%s",Find);
if (mp[Find]!="\0") ///int初始是0 string为'\0'
{
cout<<mp[Find]<<endl;
}
else
{
cout<<"eh"<<endl;
}
/// map<string,string>::iterator(迭代器) x ; find()目测从头迭代
/// if (mp.find(Find)==mp.end()) ///到end时说明没有找到要找的元素
/// {
/// cout<<"eh"<<endl;
/// }
/// else
/// {
/// cout<<mp[Find]<<endl; ///map 类似二位数组
/// }
///注释方法也对
}
return 0;
}
#include<stdio.h>
#include<string>
#include<map>
using namespace std;
map<string,string>t;
char s[50],a[15],b[15];
int main()
{
while(1)
{
gets(s);
if(s[0]=='\n'||s[0]=='\0')break;
sscanf(s,"%s%s",&a,&b);
t[b]=a;
}
while(~scanf("%s",&a))
{
if(t[a].length()==0)
printf("eh\n");
else
printf("%s\n",t[a].c_str());
}
return 0;
}
总结一下:
~scanf
sscanf
gets
'\0'
map