题解 《在结构体中定义数组?!》
2026-03-29 20:19:43
发布于:浙江
2阅读
0回复
0点赞
主要知识点:sort排序,结构体
这道题给大家看些不一样的解法,我们直接在结构体中定义数组,不过本题难不在变量定义上,而是排序上有些麻烦,所以我的结构体中加上了sum,maxx,minn,id来辅助排序以及后面的输出
#include<bits/stdc++.h>
using namespace std;
const int N = 1005,M = 15;
int n,k;
struct s{
int b[M],sum,maxx = 0,minn = INT_MAX,id;
}a[N];
bool cmp(s x,s y){
if(x.sum != y.sum) return x.sum < y.sum;
else if(x.maxx != y.maxx) return x.maxx < y.maxx;
else if(x.minn != y.minn) return x.minn < y.minn;
else return x.id < y.id;
}
int main(){
cin >> n >> k;
for(int i = 1;i <= n;i ++){
a[i].id = i;
for(int j = 1;j <= k;j ++){
cin >> a[i].b[j];
a[i].sum += a[i].b[j];
if(a[i].b[j] > a[i].maxx) a[i].maxx = a[i].b[j];
if(a[i].b[j] < a[i].minn) a[i].minn = a[i].b[j];
}
}
sort(a + 1,a + n + 1,cmp);
for(int i = 1;i <= n;i ++) cout << a[i].id << " ";
return 0;
}
同时一定要审题,最后输出的是编号,并非其他信息
这里空空如也







有帮助,赞一个