1. 程式人生 > >尋找鞍點-C課程練習

尋找鞍點-C課程練習

題目內容:

給定一個n*n矩陣A。矩陣A的鞍點是一個位置(i,j),在該位置上的元素是第i行上的最大數,第j列上的最小數。一個矩陣A也可能沒有鞍點。

你的任務是找出A的鞍點。

輸入格式:

輸入的第1行是一個正整數n, (1<=n<=100),然後有n行,每一行有n個整數,同一行上兩個整數之間有一個或多個空格。

輸出格式:

對輸入的矩陣,如果找到鞍點,就輸出其下標。下標為兩個數字,第一個數字是行號,第二個數字是列號,均從0開始計數。

如果找不到,就輸出

NO

題目所給的資料保證了不會出現多個鞍點。

#include <stdio.h>
int main()
{   
	int i,j;
	int length,a[101][101];
	scanf("%d",&length);
	for(i=0;i<length;i++)
		for(j=0;j<length;j++)
			scanf("%d",&a[i][j]);
	int k,mark,count=0;
	for(i=0;i<length;i++)
		for(j=0;j<length;j++)
		{
			mark=1;  //It's crucial to set a default and roll back after a circle.
			for(k=0;k<length;k++)
				if(a[i][j]<a[i][k]) mark=0;	//find the max number in this cow
			if(mark==0) continue;	
            //Not until it finds the right value, and let it go to the next statement. 
			for(k=0;k<length;k++)
				if(a[i][j]>a[k][j]) mark=0;
			if(mark==0) continue;
			printf("%d,%d",i,j);	
			count ++;
		}
	if(count==0) printf("NO");
	return 0; 
}