为什么输出z字符有问题

liupanmin123456789 2013-05-04 09:17:23
#include<iostream>
#include<string>
using namespace std;
int L[100][100];
int s[100][100];

int commomOrder(int m,int n,string x,string y,string *z)
{
for(int j=0;j<=n;j++)
{
L[0][j]=0;
}
for(int i=0;i<=m;i++)
{
L[i][0]=0;
}
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(x[i]=y[j])
{
L[i][j]=L[i-1][j-1]+1;
s[i][j]=1;
}
else if(L[i][j-1]>L[i-1][j])
{
L[i][j]=L[i][j-1];

s[i][j]=2;


}
else
{
L[i][j]=L[i-1][j];
s[i][j]=3;
}

i=m;
j=n;
int k=L[m][n];
while(i>0&&j>0)
{
if(s[i][j]==1)
{

z[k]=x[i];
k--;
i--;
j--;
}
else if(s[i][j]==2)
j--;
else
i--;


}

return L[m][n];
}
void main()
{
string x;
string y;
string *z=new string[40];
cout<<"输入字符串想x"<<endl;

cin>>x;

cout<<"输入字符串y"<<endl;

cin>>y;




int k=commomOrder(x.size()-1,y.size()-1,x,y,z);
cout<<k<<endl;

for(int i=0;i<k;i++)
{
cout<<z[i];
}



}
为什么我用c字符串时输出Z是结果是乱码 烫烫烫,我该怎么改啊
#include<iostream>
#include<string>
using namespace std;
int L[100][100];
int s[100][100];

int commomOrder(int m,int n,char x[],char y[],char z[])
{
for(int j=0;j<=n;j++)
{
L[0][j]=0;
}
for(int i=0;i<=m;i++)
{
L[i][0]=0;
}
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(x[i]=y[j])
{
L[i][j]=L[i-1][j-1]+1;
s[i][j]=1;
}
else if(L[i][j-1]>L[i-1][j])
{
L[i][j]=L[i][j-1];

s[i][j]=2;


}
else
{
L[i][j]=L[i-1][j];
s[i][j]=3;
}

i=m;
j=n;
int k=L[m][n];
while(i>0&&j>0)
{
if(s[i][j]==1)
{

z[k]=x[i];
k--;
i--;
j--;
}
else if(s[i][j]==2)
j--;
else
i--;


}

return L[m][n];
}
void main(){
char x[100];
char y[100];
char z[100];

cout<<"输入字符串想x"<<endl;
for(int i=0;i<10;i++)
{

cin>>x;
}

cout<<"输入字符串y"<<endl;
for(i=0;i<10;i++)
{


cin>>y;
}




int k=commomOrder(10,10,x,y,z);
cout<<k<<endl;

for(i=0;i<k;i++)
{
cout<<z[i];
}

}
...全文
136 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
情深的媛 2013-05-08
  • 打赏
  • 举报
回复
#include<iostream> using namespace std; int CommonOrder(int m,int n,char *x,char *y,char *z,int **L,int **s) { for(int j=0;j<n;j++) L[0][j]=0; for(int i=0;i<m;i++) { L[i][0]=0; } for(i=1;i<m;i++) for(j=1;j<n;j++) if(x[i-1]==y[j-1]) { L[i][j]=L[i-1][j-1]+1; s[i-1][j-1]=1; } else if(L[i][j-1]>=L[i-1][j]) { L[i][j]=L[i][j-1]; s[i-1][j-1]=2; } else { L[i][j]=L[i-1][j]; s[i-1][j-1]=3; } i=m-2;j=n-2; int k=L[m-1][n-1]; while(i>=0&&j>=0) { if(s[i][j]==1) { z[k-1]=x[i]; k--; i--; j--; } else if(s[i][j]==2) j--; else i--; } return L[m-1][n-1]; } void main() { int m,n; cin>>m; cin>>n; char *x=new char [m]; char *y=new char [n]; char *z=new char[1000]; int **p=new int *[m+1]; int **q=new int *[m+1]; for(int i=0;i<=n;i++) { p[i]=new int [n+1]; q[i]=new int [n+1]; } for(i=0;i<m;i++) cin>>x[i]; for(i=0;i<n;i++) cin>>y[i]; int k=CommonOrder( m+1,n+1,x,y,z,p,q); cout<<k; cout<<endl; for(i=0;i<k;i++) cout<<z[i]; } /* 这道题我调试了很长时间,一直把下标搞错了,所以一直有错误,一定注意下标
liupanmin123456789 2013-05-08
  • 打赏
  • 举报
回复
#include<iostream> using namespace std; int CommonOrder(int m,int n,char *x,char *y,char *z,int **L,int **s) { for(int j=0;j<n;j++) L[0][j]=0; for(int i=0;i<m;i++) { L[i][0]=0; } for(i=1;i<m;i++) for(j=1;j<n;j++) if(x[i-1]==y[j-1]) { L[i][j]=L[i-1][j-1]+1; s[i-1][j-1]=1; } else if(L[i][j-1]>=L[i-1][j]) { L[i][j]=L[i][j-1]; s[i-1][j-1]=2; } else { L[i][j]=L[i-1][j]; s[i-1][j-1]=3; } i=m-2;j=n-2; int k=L[m-1][n-1]; while(i>=0&&j>=0) { if(s[i][j]==1) { z[k-1]=x[i]; k--; i--; j--; } else if(s[i][j]==2) j--; else i--; } return L[m-1][n-1]; } void main() { int m,n; cin>>m; cin>>n; char *x=new char [m]; char *y=new char [n]; char *z=new char[1000]; int **p=new int *[m+1]; int **q=new int *[m+1]; for(int i=0;i<=n;i++) { p[i]=new int [n+1]; q[i]=new int [n+1]; } for(i=0;i<m;i++) cin>>x[i]; for(i=0;i<n;i++) cin>>y[i]; int k=CommonOrder( m+1,n+1,x,y,z,p,q); cout<<k; cout<<endl; for(i=0;i<k;i++) cout<<z[i]; } /* 这道题我调试了很长时间,一直把下标搞错了,所以一直有错误,一定注意下标
疯狂的红豆 2013-05-06
  • 打赏
  • 举报
回复
输出烫烫等乱码,是典型的使用了未初始化的内存空间,不是不合法而是里面的东西不是自己想要的。 如果你是按照算法导论上的算法框架实现的,那就对比我给你的链接看吧。
疯狂的红豆 2013-05-06
  • 打赏
  • 举报
回复
你这应该是求两个字符串的最长公共子序列。给你个链接,几乎一模一样,自己对着看吧: http://blog.csdn.net/zlhy_/article/details/8638210
我看你有戏 2013-05-06
  • 打赏
  • 举报
回复
输出了烫烫烫 ,很有可能是你的数组没有初始化
情深的媛 2013-05-06
  • 打赏
  • 举报
回复
下标不对啊,改改吧
liupanmin123456789 2013-05-04
  • 打赏
  • 举报
回复
第一个是用string写的,结果输出有问题,麻烦大家看一下
芳草天 2013-05-04
  • 打赏
  • 举报
回复
因为温度过高。所以很烫。。可以考虑给电脑降温。

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧