杭电acm 1718 老是wa 怎么回事?
我的代码:#include<iostream>usingnamespacestd;intmain(){intn,j,x,y;boolscore[101];//利用下标记住...
我的代码: #include <iostream> using namespace std; int main() { int n, j, x, y; bool score[101]; //利用下标记住该生分数 while (cin >> n) { memset (score, false, sizeof(score)); while (cin >> x >> y && (x || y)) { score[y] = true; if (x == n) n = y; } int rank = 1; for (j = 100; j >= 0; j--) { if (score[j]) { if (n == j) break; ++rank; } } cout << rank << endl; } return 0; } 人家AC的代码: #include <iostream> using namespace std; int main() { int x, y, z; int p[1001]; while ( cin >> x ) { int i = 0; int j; while ( cin >> y >> z && ( y || z ) ) { p[i++] = z; if ( x == y ) x = z; } int num = 1; for ( j = 0; j < i; ++j ) { if ( p[j] > x ) ++num; /////计算几个数比该生大; } cout << num << endl; } return 0; }
展开
展开全部
是这样。。。你使用了bool来记录score(利用下标记住该生分数),只记录了该分数是否出现,但是该分数却不止出现一次,比如你考99分,前面有两个100分的人,你的代码就把你排在第二名,可是明显你是第三名嘛!附带我的c语言代码(你可能看得更清楚点): #include <stdio.h> int main () { int n , x , y , m , i , t , a [ 101 ]; while ( scanf ( "%d" , & n ) != EOF ) { for ( i = 0 ; i <= 100 ; i ++ ) a [ i ] = 0 ; while ( scanf ( "%d %d" , & x , & y ) != EOF && x + y ) { if ( x == n ) m = y ; a [ y ]++; } t = 0 ; for ( i = m + 1 ; i <= 100 ; i ++ ) { t += a [ i ]; } printf ( "%d\n" , t + 1 ); } return 0 ; } 祝你AC呵呵! 追问: 非 常明 白!突然发现自己傻了! 回答: 呵呵。。。没事没事。。。我也错过一次。。。虽然不知道是为什么错,很久以前了。。。看到问这样的问题忍不住帮你解答了一下呵呵。。。没什么啦。。。继续加油呵呵。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询