PTA 2021-06-071038 Recover the Smallest Number (30 分)

本题就是注意一下 怎么把前缀0 都消去,以及ans为“000…000”怎么办

tips: 怎么用cmp来判断是否为最小的字符串和?

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool cmp1(string a,string b){
	return a+b<b+a;
}
int n,num;
string ans;
string str[10010];
int main(){
	scanf("%d",&n);
	for(int  i=0;i<n;i++){
	cin>>str[i];									//直接以字符串的形式读入,比如 028,033 存进去还是 028 033 这前面的0对答案没影响,因为题干只要求首位不为0 
	}
	sort(str,str+n,cmp1);
	for(int i=0;i<n;i++){
		ans+=str[i];
	}
	while(ans.length()!=0&&ans[0]=='0')
		ans.erase(ans.begin());						//去掉所有前缀0 
	if(ans.length()==0)
	cout<<0;
	cout<<ans;										//写成 cout<<ans.length()==0?0:ans;  会报  运行时出错  得 28 分 
	return 0;
	
}
上一篇:作业3


下一篇:C++动态链接库方法调用