View Code of Problem 85

#include<stdio.h>
#include<string.h>
#include<stdlib.h>//位运算
#include<stdio.h>
const int maxn = 10010;
int arr[maxn][maxn];
int brr[maxn][maxn];
int min = 0;
int main()
{
	int m = 0, n = 0;
	int i = 0, j = 0;
	int a = 0, b = 0;
	scanf("%d %d", &m, &n);
	for (i = 0; i < m; i++) {
		for (j = 0; j < n; j++)
		{
			brr[i][j] = 0;
		}
	}
	for (i = 0; i < m; i++) {
		for (j = 0; j < n; j++)
		{
			scanf("%d", &arr[i][j]);
		}
	}

	for (i = 0; i < m; i++) {
		min = arr[i][0];
		for (j = 0; j < n; j++)
		{
			
			if (arr[i][j] <= min)
			{
				min = arr[i][j];
				a = i, b = j;
			}

		}
		//把i,j赋值给数组
		brr[a][b] = 1;
	}
	//现在找到每一行的最小值了
	//若i=a,j=b;则找该列是否有数值大于它的,如果大于,则置为0
	//遍历列的话,第二维置为0,行循环
    //固定列为b
	for(i=0;i<n;i++)
		for(int j=0;j<m;j++){
		    if(brr[i][j]==1)
		       for(int a=0;a<n;a++)
			       if(arr[a][j]>arr[i][j])
				      brr[i][j]=0;
		}
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			if(brr[i][j]==1)
				printf("%d %d",i+1,j+1);
}

Double click to view unformatted code.


Back to problem 85