刚学数组,不知道怎么弄这个记行号列号,还有这个没有鞍点,人晕了
1条回答 默认 最新
- a5156520 2022-09-30 09:51关注
我的思路如下:
1、申请一块内存用于存储m*n个整数,然后用一个int指针指向它,以便访问数据.
2、通过外层for循环遍历每一行,然后用两个内层for循环遍历找出所在行的最大值,即判断再所在列是否为最小值,如果是的,则打印它的行列,及其值。
3、如果遍历完所有整数,都没有找到靶点,则输出“No”.
代码如下:#include <stdio.h> #include <stdlib.h> int main(void){ int m,n; scanf("%d%d",&m,&n); //printf("m=%d,n=%d\n",m,n); int * p = (int*)malloc(sizeof(int)*(m*n)); //申请一块内存用于存储m*n个整数 for(int i=0;i<m;i++){ //从输入获取m*n个整数 for(int j=0;j<n;j++){ scanf("%d",((p+i*n)+j)); } } // printf("输入的数组为:\n"); // for(int i=0;i<m;i++){ // for(int j=0;j<n;j++){ // printf("%d ",*((p+i*n)+j)); // } // printf("\n"); // } int target=0; for(int i=0;i<m;i++){ int max=*(p+i*n+0); int maxIndex=0; // printf("i=%d,",i); for(int j=0;j<n;j++){ //printf("j=%d,",j); //寻找数组每行最大的数 if(max<*(p+i*n+j)){ max=*(p+i*n+j); maxIndex = j; } } target=1; //然后找出最大的这个数在所在的列是否为最小 for(int k=0;k<m;k++){ // printf("k=%d,",k); if(max>=*(p+k*n+maxIndex)){ target=0; } } //如果在所在行最大, 在所在的列最小 ,即为所寻找的靶点,打印打印它的行列,及其值 if(target==1){ printf("%d %d %d\n",(i+1),(maxIndex+1),max); } // printf("i=%d,finished!\n",i); } if(target==0){ printf("No"); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 有没有可以帮我搞一个微信建群链接,包括群名称和群资料群头像那种,不会让你白忙
- ¥15 stm32开发clion时遇到的编译问题
- ¥15 lna设计 源简并电感型共源放大器
- ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
- ¥15 Vue3地图和异步函数使用
- ¥15 C++ yoloV5改写遇到的问题
- ¥20 win11修改中文用户名路径
- ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
- ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
- ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题