屎山代码
查看原帖
屎山代码
1622400
LzraSirrr楼主2024/12/26 15:30
#include<bits/stdc++.h>
using namespace std;

int n,m,a,b; // n=歌的数量 m=需要选出的歌的数量 a班上的人数 b学号

// 冒泡排序函数,对数组进行降序排序
void bubbleSort(int arr[], int n,int bnum[]) {
    for (int i = 0; i < n - 1; i++) {
        // 提前设置一个标志位,用于检测当前轮次是否发生了交换
        int swapped = 0;
        for (int j = 0; j < n - 1 - i; j++) {
            // 如果当前元素大于其后一个元素,则交换它们
            if (arr[j] < arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                swapped = 1;
                
                int tdmp = bnum[j];  // 对歌的序号排序 
                bnum[j] = bnum[j + 1];
                bnum[j+1] = tdmp;
                swapped = 1;
            }
        }
        // 如果当前轮次未发生交换,说明数组已排序完成,提前退出
        if (swapped == 0) {
            break;
        }
    }
}


// 找出zyl最大值的编号 
int findMaxvalue(int arr[],int brr[],int size){
	int maxvalue = arr[0];
	int maxbianhao;
	for(int i = 0;i<size;i++){
		if(arr[i] > maxvalue){
			maxvalue = arr[i];
			maxbianhao = brr[i];
		}
	}
	return maxbianhao;
}


bool bijiao(int arr[],int x,int m){
	int ty = 0;
	for(int i = 0;i < m;i++){
		if(arr[i] == x){
			ty = 1;
		}
	}
	if(ty == 1){
		return 1; // zyl最喜欢的歌在歌单上 
	}else{
		return 0; // zyl最喜欢的歌不在歌单上 
	}
}

struct Num{
	int nx; // 记录=快乐值
}t[105][100007];

int main(){
	int max;
	int bl[n]; 
	int zylnum[n] = {}; // 记录zyl选歌的各快乐值 
	int zyl[n] = {}; // 记录zyl选歌的编号 
	scanf("%d%d%d%d",&n,&m,&a,&b);
	int sum[n] = {}; //记录每首歌快乐度 
	for(int i = 1;i <=a;i++){
		bl[i-1] = i;
		for(int j = 1;j <= n;j++){
				cin >> t[i][j].nx;
		}
	}
	
	for(int j = 1;j <= n;j++){
		for(int i = 1;i<=n;i++){
			sum[j-1] += t[i][j].nx;  // 计算每首歌的快乐度 
		}
	}
	
	for(int i = 1;i <=a;i++){
		if(i == b){
			for(int j = 1;j <=n;j++){
				zylnum[j-1] = t[i][j].nx; 
				zyl[j-1]=j;
			}
		}
	}
	max = findMaxvalue(zylnum,zyl,n);
	// 冒泡排序
	bubbleSort(sum,n,bl);
	// 测试 
	// 输出 
	if(bijiao(bl,max,m)){
		cout << max << " ";
		for(int i = 0;i < (m-1);i++){
			cout << bl[i] << " ";
			}
	} else{ 
		for(int i = 0;i < (m-1);i++){
			cout << bl[i] << " ";
			}
		cout << max << " ";
	}
	return 0;
}
2024/12/26 15:30
加载中...