求助大佬!深搜T掉两个点
查看原帖
求助大佬!深搜T掉两个点
253680
HackerDsg楼主2020/8/19 00:31
#include<iostream>
using namespace std;
int n;
string str,ans="9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999";
string smaller(string str,string str2){
	if(str.length()<str2.length())return str;
	if(str.length()>str2.length())return str2;
	if(str.compare(str2)>0)return str2;
	else return str;
}
void dfs(int x,string strstr){
	if(x>=n){
		ans=smaller(ans,strstr);
		return;
	}
	for(int i=0;i<strstr.length();i++){
		string tmp=strstr;
		str.erase(i,1);
		dfs(x+1,str);
		str=tmp;
	}
}
int main(){
	cin>>str>>n;
	if(str.length()==n){cout<<"0";return 0;}
	dfs(0,str);
	while(ans[0]=='0'&&ans.length()>1)ans.erase(0,1);
	cout<<ans;
	return 0;
}

思路非常非常简单,往死里搜,比较字符串大小,连高精都没用。怎么用深搜且避免超时?求助大神!

2020/8/19 00:31
加载中...