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
タイトルから与えられたデータは、複数の鞍点が現れないことを保証しています.
サンプルを入力:
出力サンプル:
コード#コード#
タイトル内容:
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;
}