KiKi想从n行m列的方阵队列中找到身高最高的人的位置,请你帮助他完成这个任务。
KiKi想从n行m列的方阵队列中找到身高最高的人的位置,请你帮助他完成这个任务。
第一行包含两个整数n和m,表示这个方阵队列包含n行m列。从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示方阵中的所有人的身高(保证输入身高都不相同)。(1≤x≤n≤10,1≤y≤m≤10)
一行,输出两个整数,用空格分隔,表示方阵中身高最高的人所在的行号和列号。
2 2 175 180 176 185
2 2
#include <stdio.h>
int main() {
int n,m;
int a,b;
int max = 0;
scanf("%d %d",&n,&m);
int arr[n][m];
for(int i = 0;i<n;i++)
{
for(int j = 0;j<m;j++)
{
scanf("%d",&arr[i][j]);
if(arr[i][j]>max)
{
max = arr[i][j];
a = i;
b = j;
}
}
}
printf("%d %d",a+1,b+1);
return 0;
} #include<stdio.h>
void My_scanf(int arr[10][10],int n, int m) // 录入信息
{
int i = 0;
int j = 0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d ",&arr[i][j]);
}
}
}
void search(int arr[10][10], int n, int m, int *x,int *y) //寻找最大值
{
int i = 0;
int j = 0;
int Max = 0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(arr[i][j]>=Max)
{
Max =arr[i][j];
*x = i+1;
*y = j+1;
}
}
}
}
int main()
{
int n = 0;
int m = 0;
int x = 0;
int y = 0;
scanf("%d %d",&n,&m);
int arr[10][10];
My_scanf(arr,n,m);
search(arr,n,m,&x,&y);
printf("%d %d",x,y); //打印
return 0;
} /*适用于数据中具有身高相同的数据,包括最大身高相同的数据,输出可能具有多个坐标
#include <stdio.h>
int main() {
int m, n;
scanf("%d %d", &m, &n);
int arr[m][n], maxHigh = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf(" %d", &arr[i][j]);
if (maxHigh < arr[i][j]) {
maxHigh = arr[i][j];
}
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (maxHigh == arr[i][j]) {
printf("%d %d\n", i + 1, j + 1);
}
}
}
return 0;
}*/
//适用于身高皆不同或最大身高只有一人的情况
#include <stdio.h>
int main(){
int m, n;
scanf("%d %d", &m, &n);
int arr[m][n], x = 0, y = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf(" %d", &arr[i][j]);
if (arr[x][y] < arr[i][j]) {
x = i, y = j;
}
}
}
printf("%d %d", x + 1, y + 1);
} #include <stdio.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
int arr[n][m];
int max = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &arr[i][j]);
if (arr[i][j] > max)max = arr[i][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (max == arr[i][j]) {
printf("%d %d\n", i + 1, j + 1);
}
}
}
return 0;
} #include <stdio.h>
#include <stdlib.h>
int main() {
int n,m;
scanf("%d %d", &n, &m);
//动态开辟二维数组---c语言不支持
//可以模拟实现,但空间不连续,是一块一块的空间
//数组b的元素是一维数组a
// int* a = (int*)malloc(sizeof(int)*m);
// int**b = (int**)malloc(sizeof(a)*n);
int b[10][10];
int maxi = 0,maxj = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
scanf("%d", &b[i][j]);
}
}
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
if(b[i][j] > b[maxi][maxj])
{
maxi = i;
maxj = j;
}
}
}
//下标还需要加1
printf("%d %d", maxi + 1,maxj + 1);
// int x,y;
// scanf("%d %d", &n, &m);
// //判断输入的行列是否有效
// if(x > n || y > m)
// {
// perror("x > n && y > m");
// return -1;
// }
// free(a);
// free(b);
// b = NULL;
// a = NULL;
return 0;
} #include <stdio.h>
#include <malloc.h>
int main()
{
int x = 0;
int y = 0;
int output_x = 0;
int output_y = 0;
int i = 0;
int j = 0;
int* p = NULL;
scanf("%d%d", &x, &y);
//开辟空间
p = (int*)malloc(sizeof(int) * x * y);
if(!p)
{
perror("malloc:p");
return 0;
}
//录入数据
for(i = 0; i < x; i++)
{
for(j = 0; j < y; j++)
{
scanf("%d", p + (i * y) + j);
//录入时进行比较
//使output_x、output_y一直定位在最大元素
if(*(p + (output_x * y) + output_y) < *(p + (i * y) + j))
{
output_x = i;
output_y = j;
}
}
}
printf("%d %d\n", output_x + 1, output_y + 1);
free(p);
p = NULL;
return 0;
} #include <stdio.h>
int main()
{
int n,m = 0;
int arr[100][100];
while(scanf("%d %d",&n,&m)!=EOF)
{
//获取输入的值
for(int i = 0;i<n;i++)
{
for(int j = 0;j<m;j++)
{
scanf("%d",&arr[i][j]);
}
}
//获取最大值
int max = arr[0][0];
for(int i = 0;i<n;i++)
{
for(int j = 0;j<m;j++)
{
if(max<arr[i][j])
{
max=arr[i][j];
}
}
}
//找到最大值的位置
for(int i = 0;i<n;i++)
{
for(int j = 0;j<m;j++)
{
if(arr[i][j]==max)
{
printf("%d %d",i+1,j+1);
}
}
}
}
return 0;
} #include <stdio.h>
int main()
{
int n,m;
scanf("%d %d",&n,&m);
int arr[n][m],i,max=0,x=0,y=0;
for(i=0;i<n;i++)
{
int j;
for(j=0;j<m;j++)
{
scanf("%d ",arr[i]+j);
if(arr[i][j]>max)
{
x = i+1;
y = j+1;
max = arr[i][j];
}
}
}
printf("%d %d",x,y);
/*/另一种写法,不定义x,y,但是需要进行循环判断,浪费时间,不推荐
for(i=0;i<n;i++)
{
int j;
for(j=0;j<m;j++)
{
if(arr[i][j]==max)
{
printf("%d %d",i+1,j+1);//注意是坐标,不是二维数组的下标
}
}
}
**/
return 0;
} #include <stdio.h>
int main()
{
int n = 0,m = 0,x = 0,y = 0,max = 0;
int arr[11][11] = {0};
scanf("%d%d",&n,&m);
for(int i = 1;i<=n;i++)
{
for(int j = 1;j<=m;j++)
{
scanf("%d",&arr[i][j]);
if(max<arr[i][j])//筛选最大值
{
max = arr[i][j];
x = i;
y = j;
}
}
}
printf("%d %d",x,y);
return 0;
} #include <stdio.h>
int main() {
int a, b, i, j, arr[10][10] = { 0 };
scanf("%d %d", &a, &b);
for (i = 0; i < a; i++)
{
for (j = 0; j < b; j++)
{
scanf("%d", &arr[i][j]);
}
}
int max = arr[0][0];
for (i = 0; i < a; i++)
{
for (j = 0; j < b; j++)
{
if (arr[i][j] >= max)
max = arr[i][j];
}
}
for (i = 0; i < a; i++)
{
for (j = 0; j < b; j++)
{
if (arr[i][j] == max)
printf("%d %d", i+1, j+1);
}
}
return 0;
}