杭电OJ2072 help为什么wa 30

#include<iostream>#include<string>#include<map>usingnamespacestd;intmain(){stringstr;... #include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
string str;
map<string,int> ma;
while(1)
{
while(cin>>str&&str != "#")
{
ma[str];
if(cin.get()=='\n')
break;
}
if(str == "#")
break;
cout<<ma.size()<<endl;
ma.clear();
}
}
http://acm.hdu.edu.cn/showproblem.php?pid=2072题目地址
我想知道,为什么这个题目是错的- -,给点提示吧。。。要AC的代码,网上一搜一大把的说。。。
展开
 我来答
deitytoday
2009-11-04 · TA获得超过348个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:310万
展开全部
比如这样一组测试数据(下划线表示空格)

me_me_

你的程序就没办法判定, 因为对于每埋森行最弯春亩后一个单词,如果他最后还有个空格什么的, 你就要判断出错了, 会继续把下一行的单词读进来

正确做法应该是一行一行读, 然后对于森山每一行单独扫描
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
埃菲尔之巅
2009-10-31 · TA获得超过114个赞
知道小有建树答主
回答量:72
采纳率:0%
帮助的人:92.7万
展开全部
AC代码:
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main()
{
char sh[1000],ch[1000];
int i,j,l,m,n;
int k;
set<string> st;
gets(sh);
while(sh[0]!='#')
{
l=strlen(sh);
for(i=0,k=0;i<l;i++)
{
if(sh[i]!=' ')
{
ch[k]=sh[i];
k++;
}
else
{
ch[k]='\0';
st.insert(ch);
k=0;
}
}
st.insert(ch);
m=st.size ();
cout<<m<<endl;
st.clear();
gets(sh);
}
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我求对联哦
2009-11-04
知道答主
回答量:49
采纳率:0%
帮助的人:0
展开全部
好过发布
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式