求二维数组每行最大值的最小值。一个数字到一最少变换步数

1.
//求一个数变成1所需的步数,规则如下
// 1.偶数直接除以2
// 2.奇数加1或减1
//  例如: 61
//  61 60 30 15 16 8 4 2 1   一共8步
  1. #define min(a,b) (((a) < (b)) ? (a) : (b)) 
  2. int StepNum(int n)
  3. {
  4.     if (n <= 0)
  5.     {
  6.         printf("ERROR ");
  7.         return 0;
  8.     }
  9.     else if (n == 1)
  10.     {
  11.         return 0;
  12.     }
  13.     else if (n % 2 == 0)
  14.     {
  15.         return StepNum(n/2) + 1;
  16.     }
  17.     else
  18.     {
  19.         return min(StepNum(n/2), StepNum(n/2 + 1)) + 2;
  20.     }
  21. }
2. 有二维数组int a[n][m],每一行有一个最大的数,请写代码计算出这些最大数中最小的一个
 
  1. #include <stdio.h> 
  2. //有二维数组int a[n][m],每一行有一个最大的数,请写代码计算出这些最大数中最小的一个。
  3. int FindMin(int *array, int n, int m) 
  4.     //每行的最大值 
  5.     int rowMax = 0; 
  6.     //各行的最小值 
  7.     int min = 0; 
  8.     for(int i=0; i < n; i++) 
  9.     { 
  10.         rowMax = array[i * m]; 
  11.         for(int j=1;j < m; j++) 
  12.         {
  13.             //找到行最大值 
  14.             if(array[i*m+j] > rowMax)
  15.                 rowMax=array[i*m+j]; 
  16.         }
  17.         //找行最小值 
  18.         if (i == 0)
  19.         {
  20.             min = rowMax;
  21.         }
  22.         else if(rowMax < min)
  23.         {
  24.             min = rowMax; 
  25.         }
  26.     } 
  27.     return min; 
  28. int main(void
  29.     int arr[3][4] = { {1, 5, 3, 10}, {7, 3, 2, 4}, {9, 4, 6, 7} };
  30.     int minMax = FindMin((int *)arr, 3, 4);
  31.     printf("%d/n", minMax);
  32. }


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值