首页 > 试题广场 >

最高身高

[编程题]最高身高
  • 热度指数:24809 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

KiKi想从nm列的方阵队列中找到身高最高的人的位置,请你帮助他完成这个任务。


输入描述:

第一行包含两个整数n和m,表示这个方阵队列包含n行m列。从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示方阵中的所有人的身高(保证输入身高都不相同)。(1≤x≤n≤10,1≤y≤m≤10)



输出描述:
一行,输出两个整数,用空格分隔,表示方阵中身高最高的人所在的行号和列号。
示例1

输入

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;
}

发表于 2024-12-31 10:50:33 回复(0)
#include <stdio.h>

int main() {
    int a=0,b=0;
    scanf("%d %d",&a,&b);
    int arr[a][b];
    for(int i=0;i<a;i++) {
        for(int j=0;j<b;j++) {
            scanf("%d",&arr[i][j]);
        }
    }
    int x=0,y=0;
    for(int u=0;u<a;u++) {
        for(int l=0;l<b;l++) {
            if(arr[x][y]<arr[u][l]) {
                x=u;
                y=l;
            }
        }
    }
    printf("%d %d",x+1,y+1);
    return 0;
}
发表于 2024-12-07 10:34:29 回复(0)
#include <stdio.h>

int main()
{
int n=0,m=0;
scanf("%d %d",&n,&m);
int i=1,j=1;
int a=0,b=0;
int x=0,y=0;
for(i=1;i<=n;++i)
{
    for(j=1;j<=m;++j)
    {
       scanf("%d",&a);
      if(a>b)
      {
        b=a;
        x=i;
        y=j;
      }

    }
}

printf("%d %d",x,y);

    return 0;
}
发表于 2024-08-27 15:57:32 回复(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);
}

发表于 2024-08-17 18:14:23 回复(0)
#include <stdio.h>

int main() {
    int n = 0, m = 0, x = 0, y = 0;

    int highest = 0, temp1  = 0, temp2 = 0;

    scanf("%d %d", &n, &m);
    int array[n][m];
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            scanf("%d", &array[i][j]);
            if(highest < array[i][j]) {
                temp1 = i;
                temp2 = j;
            }
        }
    }
    printf("%d %d", temp1 + 1, temp2 + 1);
    return 0;
}
发表于 2024-08-13 17:59:03 回复(0)
#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;
}

发表于 2024-08-08 15:45:41 回复(0)
#include <stdio.h>

int main() {
   int a,b;
   scanf("%d%d",&a,&b);
   int arr[a][b];
   for(int i=0;i<a;i++)
   {
    for(int j=0;j<b;j++)
    scanf("%d",&arr[i][j]);

   }
   int max=arr[0][0];
   int c=0;int d=0;
    for(int i=0;i<a;i++)
   {
    for(int j=0;j<b;j++){
   if(max<arr[i][j]){
   max=arr[i][j];
     c=i+1;
         d=j+1;
         
   }
 
         }
       
   }
   if(max==arr[0][0])
   {
    c=1;
    d=1;
   }
   printf("%d %d",c,d);
    return 0;
}
发表于 2024-08-02 20:15:43 回复(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;
}

发表于 2024-07-04 02:47:40 回复(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;
}

编辑于 2024-03-20 14:38:46 回复(0)
#include <stdio.h>

int main() {
    int n, m, x=0, y=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]>arr[x][y]){
                x = i;
                y = j;
            }
        }
    }
    printf("%d %d", x+1, y+1);
    return 0;
}

发表于 2024-02-02 22:54:54 回复(0)
#include <stdio.h>

int main() {
    int n, m, num, max, x, y = 0;
    scanf("%d %d", &n, &m);
    for (int i = 0; i < n; i ++ ) {
        for (int j = 0; j < m; j++) {
            scanf("%d", &num);
            if (num > max) {
                max = num;
                x = i;
                y = j;
            }
        }
    }
    printf("%d %d\n",x+1,y+1);
    return 0;
}

发表于 2024-01-23 23:36:25 回复(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;
}

发表于 2023-11-20 20:26:30 回复(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;
}

发表于 2023-11-08 10:22:45 回复(0)
#include <stdio.h>

int main() {
    int a[100][100], m, n, k,h=0,hi=0,hj=0;
    int i, j;
    scanf("%d %d", &m, &n);
    for (i = 0; i < m; i++ ) {
        for (j = 0; j < n; j++ ) {
            scanf("%d", &k);
            a[i][j] = k;
        }
    }
    for (i = 0; i < m; i++ ) {
        for (j = 0; j < n; j++ ) {
        if (a[i][j]>h) {h=a[i][j];
        hi=i+1;
        hj=j+1;
        }
        }
    }
printf("%d %d",hi,hj);
    return 0;
}
发表于 2023-09-15 18:15:32 回复(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;
}

发表于 2023-03-16 19:15:11 回复(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;
}

发表于 2022-11-20 19:12:26 回复(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;
}

发表于 2022-11-10 17:47:40 回复(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;
}

发表于 2022-09-12 18:55:41 回复(0)