求最大正方形邊長。
採用動態規劃思想,若當前格滿足要求,則dp[i][j]=min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1;
但是直接按字元乙個乙個讀入會超時(原因不懂。。。),每行按字串讀就不會了。。。。。
#include#include#include
#include
using
namespace
std;
int dp[2005][2005
];char mp[2005][2005
];char ss[2005
];int min(int a,int b,int
c)int
main()
}int ans=1
;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
ans=max(ans,dp[i][j]);
}printf(
"%d\n
",ans);
}return0;
}
動態規劃之字串拆分
某種字串處理語言允許程式設計師將乙個字串拆分為兩段。由於此操作需要複製字串,因此要花費n個時間單位來將乙個n個字元的字串拆為兩段。假定乙個程式設計師希望將乙個字串拆分為多段,拆分的順序會影響所花費的總時間。例如,假定這個程式設計師希望將乙個20個字元的字串在第2個,第8個以及第10個字元後進行拆分 ...
動態規劃 字串交叉問題
給出三個佇列 s1,s2,s3 判斷 s3 是否是由 s1 和 s2 交叉得來。如 s1 為 aabcc s2 為 dbbca。當 s3 為 aadbbcbcac 時,返回 true 即將 s1 拆成三部分 aa,bc,c 分別插入 s2 對應位置 否則返回 false。aabcc,dbbca,aa...
動態規劃 最大公共字串
問題定義 乙個字串s,去掉零個或者多個元素所剩下的子串稱為s的子串行。最長公共子串行就是尋找兩個給定序列的子串行,該子串行在兩個序列中以相同的順序出現,但是不必要是連續的。例如序列x abcbdab,y bdcaba。序列bca是x和y的乙個公共子串行,但是不是x和y的最長公共子串行,子串行bcba...