c++ - 我的 c++ 程序编译正常,但没有运行 . 我的程序正在运行并停止了一段时间。没有错误显示
问题描述
我的 c++ 程序正在编译,没有错误。我在vscode上运行我的程序。在同一个文件中,当我运行此代码时。
我的系统:
- 视窗 10
- 视觉工作室代码
- C++ 14
#include<bits/stdc++.h>
using namespace std;
int main(){
count<<"Hello";
return 0;
}
它运行良好。
当在同一个文件中时,我把这段代码,
#include<bits/stdc++.h>
using namespace std;
int removeAlt(string s);
int removeTwo(string s,char a,char b);
int alternate(string s);
int main(){
cout<<alternate("abaacdabd");
return 0;
}
int removeAlt(string s){
// remove consicutive characters
for(int i=0;i<s.size();){
if(s[i]==s[i+1]){
s.erase(i,1);
}
}
cout<<"Remove consitutive "<<s<<endl;
return s.size();
}
int removeTwo(string str,char a,char b){
for(int i=0;i<str.length();){
char ch=str[i];
if(str[i]==a||str[i]==b){
str.erase(i,1);
} else i++;
}
cout<<"removing "<<a<<" "<<b<<",, "<<str<<endl;
int res=removeAlt(str);
return res;
}
// Complete the alternate function below.
int alternate(string s) {
set<char>st;
// get different character of set
for(auto x:s)
st.insert(x);
int len=st.size(); // length of set
char setAr[len];
auto it=st.begin();
for(int i=0;i<len;i++){
setAr[i]=*it;
it++;
}
cout<<"Removing\n";
int up=len;
for(int i=0;i<up-1;i++){
for(int j=i+1;j<=up;j++){
cout<<"SetAr "<<i<<" "<<j<<endl;
len=max(0,removeTwo(s,setAr[i],setAr[j]));
}
}
return len;
}
解决方案
int removeAlt(string s){
// remove consicutive characters
for(int i=0;i<s.size();){
if(s[i]==s[i+1]){
s.erase(i,1);
}
}
cout<<"Remove consitutive "<<s<<endl;
return s.size();
}
你永远不会增加 i ,所以这个函数将永远运行,除非它删除所有内容。
推荐阅读
- c# - 我想实现注册的远程验证,但不登录 ASP.NET,因为它不会让任何用户登录
- python - Discord.py 成员状态
- c# - Razor-Pages - 按日期搜索
- postgresql - Looker 中未显示物化视图?
- python - 如何使用 socket.gethostbyaddr 从 Python 中的 IPv6 地址获取主机名
- java - 如何从 Worker 获取输出数据?(MVVM + WorkManager + Room)
- office-js - 替换 office-js 加载项使用的 Outlook REST API
- git - Git restore 不断在两个同名但大小写相反的文件之间切换
- java - 持续单击一段时间后如何为按钮添加onClickListener?
- javascript - 将整数转换为时间格式