PTA 乙级 1060 爱丁顿数 (25分) C++
思路:先降序排序,下标代表达标天数,当元素值小于下标时,意味着爱定顿数出现了.
为了节省代码量,我直接利用升序排序,大同小异
1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 5 using namespace std; 6 7 int main() { 8 int n = 0; 9 cin >> n; 10 vector<int> amile(n); 11 for (int i = 0; i < n; ++i) cin >> amile[i]; 12 sort(amile.begin(), amile.end()); //升序排序 13 if (amile[0] > n) cout << n; //如果最小的英里数比n都大,必然有n天大于n英里 14 else { 15 for (int i = n - 1; i >= 0; --i) { 16 if (amile[i] <= n - i) { //n-i表示天数 17 cout << n - i - 1; //如果第n-i天不满足车距>天数,那么输出上一个满足的数 18 break; 19 } 20 } 21 } 22 return 0; 23 }
默默地一点点变强,细节决定成败