80分求助,有自己的hack数据,但是不知道哪里的问题
查看原帖
80分求助,有自己的hack数据,但是不知道哪里的问题
1051616
duck_lite楼主2025/1/30 22:24

思路:使用sort排序

疑惑:自己的cmp比较函数

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef struct stu stu;
struct stu{
	ll id;
	string s;
};
bool cmp(stu x,stu y){
	if(x.s.size()==y.s.size()){
		//长度相同,比较字符串每一位的数字 
		
		string sx=x.s;string sy=y.s;
		char a,b;
		for (ll i=0;i<=x.s.size()-1;++i){
			a=sx[i];b=sy[i];
			return a>b;
		}	//return x.s>y.s; 
	//字符串本身能比较,直接比较反而能ac
	}
	else return  x.s.size()>y.s.size();//字符串长度不等,长字符串的大 
} 
void solve(){
	ll n;cin>>n;
	vector<stu>v;
	for(ll i=0;i<n;++i){
		string s;cin>>s;
		v.push_back({i+1,s});
	}
	sort(v.begin(),v.end(),cmp);
	cout<<v[0].id<<"\n"<<v[0].s; 
}
int main(){
	ll T=1;
	while(T--)solve();
	return 0;
}

请问各位大佬,我的按位比较每一位的数字的部分,哪里有问题??

另,附上自己这个错误代码的hack数据

2

1111

1113

输出的是第一个,1111

2025/1/30 22:24
加载中...