首页 > 解决方案 > 包含“cout<< ..”语句时出现运行时错误,否则在函数中可以正常工作

问题描述

我正在为小于长度为 b 的数字 C 的数字编写代码,可以使用集合“a”中的元素(相同的 no 可以多次选择)然后在调试时我每次都遇到这个奇怪的问题尝试 cout<< 函数中的某些内容,它显示运行时错误,否则执行得很好,有人帮我解决这个问题,谢谢你的帮助

这是代码

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> &a, int b, int C) {
    int n=a.size();
    int copy=C;

    if(C==0||n==0)return 0;

    vector <int> c;

    while(C>0){
        c.push_back((C%10));
        C=C/10;
    }
     //cout<<C;               //shows a runtime error if this included otherwise not
    int l=c.size();
    reverse(c.begin(),c.end());

    int flag=0;
    if(find(a.begin(),a.end(),0)!=a.end())
    flag=1;

    if(l>b){
    if(flag==1 && b!=1)
    return pow(n,b-1)*(n-1);
    else
    return pow(n,b);
    }

    if(l<b)
    return 0;

    if(l==1){
        int cth=0;
        for(int i=0;i<n;i++){
            if(a[i]<c[0])
            cth++;
        }
        return cth;
    }

    int dp[n][2];
    int ctl=0,cte=0;

    for(int i=0;i<n;i++){
        if(a[i]<c[0]&&a[i]!=0)
        ctl++;

        if(a[i]==c[0])
        cte++;
    }

    dp[0][0]=ctl;
    dp[0][1]=cte;


    for(int i=1;i<b;i++){
        int ctL=0,ctE=0;
        for(int j=0;j<n;j++){if(a[j]<c[i])ctL++; else{if(a[j]==c[i])ctE++;}}
        dp[i][0]=dp[i-1][0]*n+dp[i-1][1]*ctL;
        dp[i][1]=dp[i-1][1]*ctE;
    }

    return dp[b-1][0];

} 

int main() {
    int n;
    cin>>n;

    vector<int> a(n);
    for(int i=0;i<n;i++)
    cin>>a[i];
    int b,c;
    cin>>b>>c;
    cout<<solve(a,b,c);

}

标签: c++arrayscout

解决方案


推荐阅读