都超时了,第一次用指针数组
查看原帖
都超时了,第一次用指针数组
1239657
xrpo0楼主2024/5/13 20:39
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
#include <string.h>

struct student{
	char name[20];
	int cn;
	int math;
	int english;
};

void sort(char* k[],int cnt){
	for(int i=0;i<cnt-1;i++){
	bool flag=true;
	for(int j=0;j<cnt-i-1;j++){
		if(strcmp(k[j],k[j+1])>0){
			char* x=k[j];
			k[j]=k[j+1];
			k[j+1]=x;
			flag =false;
		}
	}
		if(flag){
			break;
		}
	}
}

int main(){
	int n;
	scanf("%d",&n);
	struct student stu[n];
	int score[n];
	for(int i=0;i<n;i++){
		scanf("%s %d %d %d",stu[i].name,&(stu[i].cn),&(stu[i].math),&(stu[i].english));
		score[i]=stu[i].cn+stu[i].math+stu[i].english;
	}
	char* k[1000];
	int cnt=0;
	for(int i=0;i<n;i++){
		int a = fabs(score[i] - score[i+1]);
		int b = fabs(stu[i].cn - stu[i+1].cn);
		int c = fabs(stu[i].math - stu[i+1].math);
		int s = fabs( stu[i].english-stu[i+1].english);
		if (a <= 5 && b <= 5 && c <= 5 && s <= 10){
			k[i]=stu[i].name;
			k[i+1]=stu[i+1].name;
			cnt+=1;
		}
	}
	sort(k,cnt);
	for(int i=0;i<n;i++){
		printf("%s %s\n",k[i],k[i+1]);
	}
	return 0;
}

是我这个写法怎么写,是冒泡排序慢了吗,都RE了

2024/5/13 20:39
加载中...