我試圖解決以下代碼擁堵問題,我已經取得了一些進展,但對於少數情況下我的代碼給出錯誤的輸出.. Welcome to Code jam從谷歌編程挑戰賽解決「歡迎來到編程挑戰賽」 2009
所以我迷迷糊糊來自俄羅斯的dev「rem」解決方案。 我不知道他/她的解決方案是如何工作的正確..代碼...
const string target = "welcome to code jam";
char buf[1<<20];
int main() {
freopen("input.txt", "rt", stdin);
freopen("output.txt", "wt", stdout);
gets(buf);
FOR(test, 1, atoi(buf)) {
gets(buf);
string s(buf);
int n = size(s);
int k = size(target);
vector<vector<int> > dp(n+1, vector<int>(k+1));
dp[0][0] = 1;
const int mod = 10000;
assert(k == 19);
REP(i, n) REP(j, k+1) {// Whats happening here
dp[i+1][j] = (dp[i+1][j]+dp[i][j])%mod;
if (j < k && s[i] == target[j])
dp[i+1][j+1] = (dp[i+1][j+1]+dp[i][j])%mod;
}
printf("Case #%d: %04d\n", test, dp[n][k]);
}
exit(0);
}//credit rem
有人可以解釋什麼在兩個循環發生?
謝謝。
哦,男孩,這裏有一個提示:*不要試圖從這段代碼學習*。 – 2012-03-17 10:54:43
如何在這裏發佈問題 – 2012-03-17 10:55:16
休息片REM。其中一位非常優秀的程序員非常年輕。你可以看到你仍然有影響,沒有被遺忘。 – 2012-03-17 11:01:43