| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
why DP wa....盯着代码看了4小时了, 还是找不到错误, 大家帮帮忙看看, 行个好心啊(附代码)#include <iostream>
#include <string>
using namespace std;
struct DPDATA
{
int w;
int state[15];
};
int f(string s1, string s2)
{
int i, j, l;
int len = s1.length();
string tmp;
for (l=len; l>=1; l--)
{
for (i=0; i<len-l+1; i++)
{
tmp = s1.substr(i, l);
if (s2.find(tmp) != string::npos)
return l;
}
}
return 0;
}
int main()
{
string s[15];
DPDATA dp[15][15];
int n;
int i, j, k;
int tmpW, b, t;
int ans;
while (cin >> n)
{
if (n <= 0) break;
for (i=1; i<=n; i++)
cin >> s[i];
for (i=1; i<=n; i++)
{
dp[1][i].w = 0;
for (j=1; j<=n; j++)
dp[1][i].state[j] = 0;
dp[1][i].state[i] = 1;
}
for (i=2; i<=n; i++)
{
for (j=1; j<=n; j++)
{
tmpW = 0;
b = 0;
for (k=1; k<=n; k++)
{
t = f(s[k], s[j]);
if (dp[i-1][k].state[j] == 0 && tmpW < dp[i-1][k].w + t)
{
tmpW = dp[i-1][k].w + t;
b = k;
}
}
dp[i][j].w = tmpW;
for (k=1; k<=n; k++)
dp[i][j].state[k] = dp[i-1][b].state[k];
dp[i][j].state[j] = 1;
}
}
/* for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
cout << dp[i][j].w << ' ';
cout << endl;
}*/
ans = dp[n][1].w;
for (i=2; i<=n; i++)
{
if (ans < dp[n][i].w)
ans = dp[n][i].w;
}
cout << ans << endl;
}
system("pause");
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator