[英]Problems with cout and a specific string length arithmatic operation c++
这是我第一次尝试LCS。 我的问题是最后一部分。 当两个输入字符串分别是“ mango”和“ man”时,cout似乎不断弄乱“ maxseq-x.length()”部分。 但是将结果预先存储在变量中或仅使用printf()时似乎很好。 谁能告诉我为什么会这样吗? 我想念一些简单的东西吗?
#include<bits/stdc++.h>
using namespace std;
int main(){
string x, y;
cin >> x >> y;
int lcs[100][100] = {{0}};
for(int i = 0; i<y.length(); i++){
for(int j = 0; j<x.length(); j++){
if(y[i] == x[j]){
int ans = 0;
if(i && j){
ans = max(1+lcs[i-1][j-1], ans);
}
else{
ans = max(1, ans);
}
lcs[i][j] = ans;
}
else{
int ans = 0;
if(i){
ans = max(lcs[i-1][j], ans);
}
if(j){
ans = max(lcs[i][j-1], ans);
}
lcs[i][j] = ans;
}
}
}
int maxseq = lcs[y.length()-1][x.length()-1];
int z = maxseq-x.length();
cout << maxseq-x.length() << endl;
printf("%d\n", maxseq-x.length());
cout << z << endl;
return 0;
}
cout
maxseq-x.length()
为无符号值。 (此表达式包含有符号和无符号值,因此结果为无符号 )
printf
%d
maxseq-x.length()
为有符号整数
cout << z
z
作为有符号整数处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.