C言語の鞍点

8779 ワード

C言語の鞍点
タイトル内容:
n*n行列Aが与えられる.行列Aの鞍点は1つの位置(i,j)であり、その位置の要素はi行目の最大数であり、j列目の最小数である.1つの行列Aにも鞍点がない可能性がある.
君の任務はAの鞍点を見つけることだ.
入力形式:
入力した1行目は正の整数n、(1<=n<=100)で、n行があり、各行にn個の整数があり、同じ行の2つの整数の間に1つ以上のスペースがあります.
出力フォーマット:
入力したマトリクスに対して、鞍点が見つかったら、その下付き文字を出力します.下には2つの数字が表示され、最初の数字は行番号、2番目の数字は列番号で、いずれも0からカウントされます.
見つからない場合は出力
NO
タイトルから与えられたデータは、複数の鞍点が現れないことを保証しています.
サンプルを入力:
4 

1 7 4 1 

4 8 3 6 

1 6 1 2 

0 7 8 9

出力サンプル:
2 1

コード#コード#
#include 
int main()
{
	int a[100][100];
	int b, c, n, i, j, max, d;
	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			scanf("%d", &a[i][j]);
		}
	}

	for (i = 0; i < n; i++)
	{
		d = 1;
		max = a[i][0];
		b = i;
		c = 0;
		for (j = 0; j < n; j++)
		{
			if (a[i][j] > max)
			{
				max = a[i][j];
				b = i;
				c = j;
			}
		}
		for (j = 0; j < n; j++)
		{
			if (max > a[j][c])
			{
				d = 0;
				break;
			}
		}
		if (d == 1) {
			printf("%d %d", b, c);
			break;
		}
		else if (d == 0 && i == n - 1)
		{
			printf("NO");
		}
	}
	return 0;
}