题意:求最长的上升子序列的长度。 解题思路:简单的dp。 dp[i]表示以i为结尾的最长上升序列。 代码: #include <iostream> using namespace std; #define MAX 1002 int a[MAX]; int dp[MAX]; int main() { int n, max; int i , j; scanf("%d", &n); for( i = 1; i <= n; i++) scanf("%d", &a[i]); dp[1] = 1; for(i = 1 ; i < n; i++) { max = 1; for(j = 1; j <=i ; j++) if(a[j] < a[i+1]) if(max<dp[j]+1) max = dp[j] + 1; dp[i+1] = max; } max = dp[1]; for(i = 2; i <= n; ++i) if(dp[i] > max) max = dp[i]; printf("%d/n", max); return 0; }