2 条题解
-
1
人机#include <iostream> #include <algorithm> using namespace std; int f[305][305]; int s; int n,m; int ans; int V; int main() { int n; cin>>n; for(int i=1;i<=n;i++){ cin>>f[i][i]; ans=max(ans,f[i][i]); } for(int i=n-1;i>=1;i--){ for(int j=i+1;j<=n;j++){ for(int k=i;k<j;k++){ if(f[i][k]==f[k+1][j]){ f[i][j]=max(f[i][j],f[i][k]+1); ans=max(ans,f[i][j]); } } } } cout<<ans; return 0; }
-
-1
#include <iostream> #include <algorithm> #include <cmath> #include <cstdio> #include <queue> #include <map> #include <cstring> #include <iomanip> #include <vector> #include <stack> #define LL long long using namespace std; const int N = 1e3 + 5; const int M = 1e6 + 5; const int INF = 0x3f3f3f3f; int f[N][N]; int main() { int n, ans = 0; scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%d", f[i] + i); ans = max(ans, f[i][i]); } for(int i = 2; i <= n; i++) { for(int l = 1; l + i -1 <= n; l++) { int r = l + i - 1; for(int k = l; k < r; k++) { if(f[l][k] == f[k + 1][r] && f[l][k]) { f[l][r] = max(f[l][r], f[l][k] + 1); ans = max(ans, f[l][r]); } } } } cout << ans; return 0; }
- 1
信息
- ID
- 2249
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 28
- 已通过
- 11
- 上传者