小明的噴漆計劃
阿新 • • 發佈:2020-12-12
想了20min然後寫了10min qwq
直接把思考過程掛上來了,應該能看懂吧/wq
(刪去了大部分錯誤的過程,然後才發現正確的就這麼點/kk
然而又沒能一次過。查了很久發現是第三層迴圈那裡把 i 打成了 1 。果然又是低階錯誤嗚嗚嗚
#include<bits/stdc++.h> using namespace std; int n,f[101][101]; char s[101]; int main() { while(scanf("%s",s+1)!=EOF) { n=strlen(s+1); for(int i=1;i<=n;i++) {for(int j=1;j<=n;j++) { f[i][j]=2e9; } } for(int i=1;i<=n;i++) f[i][i]=1;//長度為1的區間值為1 for(int l=2;l<=n;l++) { for(int i=1;i<=n-l+1;i++) { int j=i+l-1; for(int k=i;k<j;k++)//emmm就是這裡第一次的時候打錯了( { f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]); } if(s[i]==s[j]) f[i][j]--;//如果兩端是一樣的那就可以少塗一次 } } cout<<f[1][n]<<endl; } return 0; }