題目說第一行會有一個n代表幾個數,但範例輸入好像不是這樣?
還有為什麼line 1的答案會是0呢,不是在怎麼樣都可以接一台嗎??
題目說第一行會有一個n代表幾個數,但範例輸入好像不是這樣?
還有為什麼line 1的答案會是0呢,不是在怎麼樣都可以接一台嗎??
稍微看了一下後大概了解題目的意思,如果我沒有理解錯的話,請問我這樣寫錯在哪?
#include<bits/stdc++.h>
using namespace std;
int lis(int n);
int a[2001];
int dp[2001];
int main(){
int m;
cin>>m;
int z=0;
while(z!=m){
int n;
cin>>n;
if(n==0){
cout<<0<<endl;
continue;
}
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=0;i<2001;i++){
dp[i]=-1;
}
int ans=0;
for(int i=1;i<=n;i++){
if(lis(i)>ans) ans=lis(i);
}
cout<<ans<<endl;
z++;
}
}
int lis(int n){
if(n==1){
return 1;
}
if(dp[n]!=-1) return dp[n];
int ans=1;
for(int i=1;i<=n;i++){
if(a[n]>a[i]){
int now=lis(i)+1;
if(now>ans) ans=now;
}
}
dp[n]=ans;
return ans;
}
題目敘述中 0<=n<=2000,n有可能是0