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> 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; }
#include <stdio.h> int main() { int x,y; int a[x][y];//确定数组大小 scanf("%d%d",&x,&y); int max=0,n=0,m=0;//记录最大值,坐标 for(int i=0;i<x;i++){ for(int j=0;j<y;j++){ scanf("%d",&a[i][j]); if(max<a[i][j]){//如果有新的最大值,记录它及它的坐标 max=a[i][j]; n=i; m=j; } } } printf("%d %d",n+1,m+1);//由于数组特性,需要加1 return 0; }
int main() { int n, m, a[10][10] = {0}, b[2] = {0}; scanf("%d%d", &n, &m); int i, j, max = 0; for (i = 1; i <= n; i++) { for (j = 1; j <= m; j++) { scanf("%d", &a[i][j]); if (a[i][j] > max) { max = a[i][j]; b[0] = i; b[1] = j; } } } printf("%d %d", b[0], b[1]); return 0; }