北大ACM1002题

来源:百度知道 编辑:UC知道 时间:2024/06/24 05:58:04
#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;

cin默认是要跳过空白字符的(也就是空格, 换行, tab之类), 所以你这样永远读不倒那个'\n',

如果你真的要用cin, 那么在你使用cin前加入这行:
cin>>noskipws;
这样cin就不会忽略空白字符了

while(cin >> b)
{
if(b != '\n') //这句话好像没起到作用

你换成这样:
while(b = _getch())
{
if(b != '\r')

不用改了。改了也不会过,这题至少要用到 快速排序,冒泡过不了的。。

对刚学语言的新手 来说OJ不见得是个好地方,还是 找些进阶资料,把基础打牢,把数据结构掌握好后在去水。。。。。。。。。。。

if(b != '\n') //这句话好像没起到作用

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

你按Enter 后,b的ASCII值为 13,即'\r'

干脆整个字符串一下子读进来啦,一个一个字符的读进来比较麻烦。我是用二叉树来AC的...