PTA 乙級 1038 統計同成績學生 (20分) C/C++
阿新 • • 發佈:2020-07-25
本以為挺簡單的,隨便寫了寫,然後就有了第一個版本
注意本題輸入輸出一定不要用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準備的,用其他語言更容易超時