首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

doc程序//如何没法调试dp结构体数组赋值之后,还是0呢。

2014-01-09 
doc程序//怎么没法调试dp结构体数组赋值之后,还是0呢。。。// d_dec29.cpp : 定义控制台应用程序的入口点。//#

doc程序//怎么没法调试dp结构体数组赋值之后,还是0呢。。。


// d_dec29.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include "conio.h"
#include "math.h"
#include <vector>
#include <string>

#define MAX_STRING_LEN 255
#include <iostream>
using namespace std;

typedef struct tagDPLCS{
int d;
int r;
}DPLCS;

int InitializeDpLcs(const std::string& str1, const std::string& str2, DPLCS dp[MAX_STRING_LEN][MAX_STRING_LEN])
{
std::string::size_type i,j;

for(i = 1; i <= str1.length(); i++)
{
for(j = 1; j <= str2.length(); j++)
{
if((str1[i - 1] == str2[j - 1]))
{
dp[i][j].d = dp[i - 1][j - 1].d + 1; 
dp[i][j].r = 1;

}
else
{
if( dp[i - 1][j].d >= dp[i][j - 1].d )
{
dp[i][j].d = dp[i - 1][j].d;
dp[i][j].r = 2;

}
else
{

dp[i][j].d = dp[i][j - 1].d;
dp[i][j].r = 3;

}            

}

}

}
return dp[str1.length()][str2.length()].d;
}



int _tmain(int argc, _TCHAR* argv[])
{
string str1 = "a1b23c";
string str2 = "abc";
string lcs;
DPLCS dp[MAX_STRING_LEN][MAX_STRING_LEN] = {0};
InitializeDpLcs(str1, str2, dp);
return 0;
}


[解决办法]

int _tmain(int argc, _TCHAR* argv[])
{
string str1 = "a1b23c";
string str2 = "abc";
string lcs;
DPLCS dp[MAX_STRING_LEN][MAX_STRING_LEN] = {0};
InitializeDpLcs(str1, str2, dp);
for (int i = 0; i < 10; ++i)
{
cout << "dp[1][" << i << "]:(" << dp[1][i].d << ", " << dp[1][i].r << ")" << endl;
}
system("pause");

return 0;
}

真不知道说LZ什么好了,dp当然被改变了,只不过它是两维数组,你调试时,只看到dp[0][XXX]的数据,但你根本没改过dp[0][XXX],所以你自以为整个dp都没被改。其实你不要把数组弄那么大,用两层循环把里面东西都打印出来不就一目了然了~

热点排行