
#include <stdio.h>
int n;
int max(int row, int a[][n], int n);
int min(int column, int a[][n], int n);
int main(void)
{
scanf("%d", &n);
int i, j, a[n][n];
for (i = 0;i < n;i++)
{
for (j = 0;j < n;j++)
{
scanf("%d", &a[i][j]);
// if (j != n - 1)
// scanf(" ");
}
// scanf("\n");
}
for (i = 0;i < n;i++)
{
if (i == min(max(i, a, n), a, n))
{
printf("%d %d", i, max(i, a, n));
goto end;
}
}
printf("NO");
end: return 0;
}
int max(int row, int a[][n], int n)
{
int i, column = 0;
for (i = 1;i < n;i++)
{
if (a[row][i] > a[row][column])
column = i;
}
return column;
}
int min(int column, int a[][n], int n)
{
int i, row = 0;
for (i = 1;i < n;i++)
{
if (a[i][column] < a[row][column])
row = i;
}
return row;
}
uj5u.com熱心網友回復:
老編譯器不支持變數n作為陣列下標宣告動態大小。uj5u.com熱心網友回復:
我配置了MinGW GCC 11.1.0,請問怎么還是報錯呀?

uj5u.com熱心網友回復:
建議還是老老實實使用new、delete和new[]、delete[]方式創建/銷毀動態陣列。uj5u.com熱心網友回復:
或者干脆使用STL的vectoruj5u.com熱心網友回復:
c++不支持以變數創建陣列,不是編譯器問題,解決方法同樓上uj5u.com熱心網友回復:
STL的vector是c++用的,我寫的是c語言。這個new和delete我查了一下,不會用。可以麻煩你幫我改一下代碼嗎?非常感謝。
uj5u.com熱心網友回復:
修改如下,供參考:#include <stdio.h>
int max(int row, int **a, int n);
int min(int column, int **a, int n);
int main(void)
{
int n;
int i, j, **a; //a[n][n];
scanf("%d", &n);
a=new int*[n];
for(i=0;i<n;i++) a[i]=new int[n];
for (i = 0;i < n;i++)
{
for (j = 0;j < n;j++)
{
scanf("%d", &a[i][j]);
// if (j != n - 1)
// scanf(" ");
}
// scanf("\n");
}
for (i = 0;i < n;i++)
{
if (i == min(max(i, a, n), a, n))
{
printf("%d %d", i, max(i, a, n));
goto end;
}
}
printf("NO");
end:
for(i=0;i<n;i++)delete []a[i];
delete []a;
return 0;
}
int max(int row, int **a, int n)
{
int i, column = 0;
for (i = 1;i < n;i++)
{
if (a[row][i] > a[row][column])
column = i;
}
return column;
}
int min(int column, int **a, int n)
{
int i, row = 0;
for (i = 1;i < n;i++)
{
if (a[i][column] < a[row][column])
row = i;
}
return row;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/284662.html
標籤:新手樂園
