只有第一个过了,为什么啊,急急急
查看原帖
只有第一个过了,为什么啊,急急急
866969
telankesi楼主2022/11/21 10:50
#include <stdio.h>
int main() {
	int m, n, k, t,d;
	scanf("%d%d%d%d%d", &m, &n, &k, &t,&d);//m行 n列 k行 t 列 d对
	int a[3000][4]={0};//每对学生坐标
	int f[2000] = { 0 };
	int g[2000] = { 0 };//桶排
	for (int i = 1; i <= d; i++) {
		for (int j = 0; j < 4; j++) {
			scanf("%d", &a[i][j]);   //每对学生四个数据
		}
	}
	int x[3000][2]={0}, y[3000][2] = {0};
	for (int i = 1; i <= d; i++) {           
		if (a[i][1] == a[i][3]) { x[fun(a[i][0], a[i][2])][1]++; }
		if (a[i][0] == a[i][2]) { y[fun(a[i][1],a[i][3])][1]++; }
	}
	for (int i = 1; i <= m; i++) {     //x行  y列   x[i][0]=i行 y[i][0]=i列
		x[i][0] = i;
	}
	for (int j = 1; j <= n; j++) {
		y[j][0] = j;
	}
	for (int i = 1; i < m; i++) {             //进行从大到小的排序
		for (int j = i + 1; j <= m; j++) {
			if (x[j][1] > x[i][1]) {
				int h = x[i][1];
				x[i][1] = x[j][1];
				x[j][1] = h;
				int m = x[i][0];
				x[i][0] = x[j][0];
				x[j][0] = m;
			}
		}
	}
 	
	for (int i = 1; i < n; i++) {
		for (int j = i + 1; j <= n; j++) {
			if (y[j][1]> y[i][1]) {
				int h = y[i];
				y[i][1] = y[j][1];
				y[j][1] = h;
				int m = y[i][0];
				y[i][0] = y[j][0];
				y[j][0] = m;
			}
		}
	}
	for (int i = 1; i <= k; i++) {
		f[x[i][0]]++;
	}
	for (int i = 1; i <= t; i++) {
		g[y[i][0]]++;
	}
	for (int i = 1; i <= m; i++) {
		if (f[i])
			printf("%d ", i);
	}
	printf("\n");
	for (int i = 1; i <= n; i++) {
		if (g[i])
			printf("%d ", i);
	}
	return 0;
}
int fun(int q,int w) {        //最小行数
	return q < w ? q : w;
}
2022/11/21 10:50
加载中...