我试图解决以下代码拥堵问题,我已经取得了一些进展,但对于少数情况下我的代码给出错误的输出.. 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