cout的问题和特定的字符串长度算术运算c ++

时间:2018-02-07 14:04:30

标签: c++ string

这是我第一次尝试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] = enter image description here;
    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;
}

1 个答案:

答案 0 :(得分:0)

coutmaxseq-x.length()作为无符号值处理。 (此表达式包含已签名无符号值,因此结果为无符号

%d中的{p> printf处理maxseq-x.length() 签名整数

cout << zz作为签名整数处理。