北大ACM1002题

#include"stdafx.h"#include<iostream>#include<vector>usingnamespacestd;intmain(intargc... #include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;

int main(int argc, char* argv[])
{
int n, s, q;
bool a, t, w = false;
char b;
cin >> n;
vector<vector<char> > e;
for(int i = 0; i < n; i++)
{
vector<char> c;
vector<char> d;
while(cin >> b)
{
if(b != '\n') //这句话好像没起到作用
c.push_back(b);
else
break;
}
for(int j = 0; j < c.size(); j++)
{
switch (c[j])
{
case '-': break;
case 'A':
case 'B':
case 'C': d.push_back('2');break;
case 'D':
case 'E':
case 'F': d.push_back('3');break;
case 'G':
case 'H':
case 'I': d.push_back('4');break;
case 'J':
case 'K':
case 'L': d.push_back('5');break;
case 'M':
case 'N':
case 'O': d.push_back('6');break;
case 'P':
case 'R':
case 'S': d.push_back('7');break;
case 'T':
case 'U':
case 'V': d.push_back('8');break;
case 'W':
case 'X':
case 'Y': d.push_back('9');break;
default: d.push_back(c[j]);break;
}
}
e.push_back(d);
}
for(int m = 0; m < e.size()-1; m++)
{
t = false;
a = false;
s = 1;
for(int l = m + 1; l < e.size(); l++)
{
if(m == 0)
{
if(e[m] == e[l])
{
w = true;
a = true;
s++;
q = m;
}
}
else if(m != 0)
{
for(int r = 0; r < m; r++)
{
if(e[m] == e[r])
t = true;
}
if(e[m] == e[l] && t == false)
{
w = true;
a = true;
s++;
q = m;
}
}
}
if(a == true)
{
cout << e[q][0] << e[q][1]
<< e[q][2] << '-'
<< e[q][3] << e[q][4]
<< e[q][5] << e[q][6]
<< " " << s << endl;
}
}
if(w == false)
cout << "No duplicates." << endl;
return 0;
}
其中有句话我想判断是否输入的是回车,好像没起到作用。
不要粘贴别的什么来,或是写一大堆。只需告诉我该怎么改就可以了。
本人是C++新手,最近刚研究数组,向量,也不懂什么算法,只有像这样做了,希望能有个有效的方案。谢谢各位了。
展开
 我来答
deitytoday
2008-11-28 · TA获得超过348个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:310万
展开全部
cin默认是要跳过空白字符的(也就是空格, 换行, tab之类), 所以你这样永远读不倒那个'\n',

如果你真的要用cin, 那么在你使用cin前加入这行:
cin>>noskipws;
这样cin就不会忽略空白字符了
追悔七年
2008-11-28 · TA获得超过587个赞
知道小有建树答主
回答量:251
采纳率:66%
帮助的人:264万
展开全部
while(cin >> b)
{
if(b != '\n') //这句话好像没起到作用

你换成这样:
while(b = _getch())
{
if(b != '\r')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宁波祝老师
2008-11-28 · TA获得超过849个赞
知道小有建树答主
回答量:455
采纳率:100%
帮助的人:286万
展开全部
不用改了。改了也不会过,这题至少要用到 快速排序,冒泡过不了的。。

对刚学语言的新手 来说OJ不见得是个好地方,还是 找些进阶资料,把基础打牢,把数据结构掌握好后在去水。。。。。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
希声和寡
2008-11-28 · TA获得超过2.6万个赞
知道大有可为答主
回答量:6437
采纳率:0%
帮助的人:3407万
展开全部
if(b != '\n') //这句话好像没起到作用

上面的应该改为:
if(b != '\r')

你按Enter 后,b的ASCII值为 13,即'\r'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a176388100
2008-11-28 · 超过12用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:18.8万
展开全部
干脆整个字符串一下子读进来啦,一个一个字符的读进来比较麻烦。我是用二叉树来AC的...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式