Time Limit: 2000/1000 MS
(Java/Others) Memory Limit: 65536/32768 K
(Java/Others)
Total Submission(s): 14849 Accepted
Submission(s): 5905
这道题跟用筛选法求素数一样,本以为可以秒过,没想到有个地方没有考虑到。还是得实践啊!
#include<iostream> #include<string> #define MAX 1000000 using namespace std; int a[MAX]; bool b[MAX]; int main() { int n, h, sum = 0, max = -1; while (cin >> n){ sum = 0; for (int i = 0; i < n; i++){ cin >> a[i]; } memset(b, 0, sizeof(b)); for (int i = 0; i < n; i++){ if (!b[i]){ sum++; max = a[i]; for (int j = i + 1; j < n; j++){ if (max >= a[j] && !b[j]){//这个地方本来没有!b[j]的,结果老是wa,加上就ac了。 b[j] = 1; max = a[j]; } } } } cout << sum << endl; } return 0; }
原文:http://www.cnblogs.com/littlehoom/p/3551138.html