PTA 乙级 1038 统计同成绩学生 (20分) C/C++
本以为挺简单的,随便写了写,然后就有了第一个版本
注意本题输入输出一定不要用cin,cout,要用scanf,printf(否则更容易超时)
C/C++
1 #include<iostream> 2 #include<vector> 3 4 using namespace std; 5 6 int main() { 7 int n = 0, k = 0; 8 int flag = 0; 9 int search = 0; 10 int num = 0; 11 cin >> n; 12 vector<int> grad(n); 13 for (int i = 0; i < n; ++i) cin >> grad[i]; 14 cin >> k; 15 for (int i = 0; i < k; ++i) { 16 cin >> search; 17 for (int j = 0; j < n; ++j) { 18 if (search == grad[j])num++; 19 } 20 if (flag)cout << " "; 21 cout << num; 22 num = 0; 23 flag = 1; 24 } 25 return 0; 26 }
然后最后一个测试点超时。。。
所以,换一种思路吧
1 #include<iostream> 2 3 using namespace std; 4 5 int main() { 6 int n = 0, k = 0; 7 /*当前输入成绩*/ 8 int tmp = 0; 9 /*空格输出标志位*/ 10 int flag = 0; 11 /*0~100分数数组*/ 12 int grad[101] = { 0 }; 13 scanf_s("%d", &n); 14 for (int i = 0; i < n; ++i) { 15 scanf_s("%d", &tmp); 16 if (tmp <= 100 && tmp >= 0) //输入的成绩对应数组元素累加 17 grad[tmp]++; 18 } 19 scanf_s("%d", &k); 20 for (int i = 0; i < k; ++i) { 21 scanf_s("%d", &tmp); 22 if (flag)printf(" "); 23 printf("%d", grad[tmp]); //直接输出所查找同成绩的个数 24 flag = 1; 25 } 26 return 0; 27 }
感觉本题就是为C准备的,用其他语言更容易超时
默默地一点点变强,细节决定成败