c++ - 包含“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);
}
解决方案
推荐阅读
- java - 双向链表的 isRemoved 方法
- salesforce - Glassfish 4.1 与 SAML 上的 Salesforce SSO
- c# - 贴出一组输入模型 ASP.NET Core 5.0 MVC
- c - C 运算符和优先级
- excel - 有值的空白单元格
- javascript - 我无法弄清楚以下函数的字符串返回
- django - 我可以使用我的 Django 应用程序编辑 cronjobs 吗?
- powershell - 使用 Powershell 7 更新 IIS 的 SSL 绑定
- rust - 如何通过添加其他字段来改变 serde_json 值?
- javascript - 我如何修复我在哪里选择一个而其他的取消选择?