求助各位路过的大佬帮忙看一下问题何在?

任意输入一个二维数组,如何将数组每行最大值和最小值分别放在每行的第一个位置和最后一个位置,同时保证其它元素的相对位置不发生变化?

各位路过的大佬有明白问题所在的拜托帮我看看我打的程序哪里有错,为什么总是WA?如果可以的话敬请各位大佬帮忙修改一下我的程序,万分感谢!(此题是去年学校的考试题,已经结束了)

题目描述

更多的新病毒来侵入乎优塔的身体,乎优塔派出n*n的免疫细胞方阵战斗队来应战,但是他想对战斗队重组,即:把每行免疫细胞战斗力最强的放在最前面(最左面),把每行免疫细胞战斗力最弱的放在最后面(最右面),请编程帮他实现。

输入描述:

共n + 1行,

第一行,一个整数n(2≤n≤100),表示免疫细胞战斗力的方阵大小,

接下来的n+1行,每行输入n个整数,用空格分隔,分别表示n个免疫细胞的战斗力,保证每行n个战斗力的值都是唯一的。

输出描述:

输出重组之后的免疫细胞战斗力的方阵。

示例

输入

4

1 2 3 4

7 8 2 4

5 6 7 8

4 3 2 1

输出

4 2 3 1

8 7 4 2

8 6 7 5

4 3 2 1

#include <iostream>
#include <algorithm>
using namespace std;
int main() 
{
    int n,i,j;
    cin >> n;
    int a[101][101];
    int max[101]={0};
    int min[101]={0};
    int b[101][101];
    int c[101][101];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> a[i][j];
            b[i][j]=a[i][j];
        }
    }
   for (int i = 0; i < n; i++) {
        for (int j = 0; j < n - 1; j++) {
            for (int k = j + 1; k < n; k++) {
                if (a[i][j] < a[i][k]) {
                    swap(a[i][j], a[i][k]);
                }
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        max[i]=a[i][0];
        min[i]=a[i][n-1];
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if(b[i][j]!=max[i]&&b[i][j]!=min[i]) c[i][j]=b[i][j];
        }
        
    }
     for (int i = 0; i < n; i++) {
         cout<<max[i]<<" ";
        for (int j = 0; j < n; j++) {
          if(c[i][j]!=0)  cout<< c[i][j]<<" ";
        }
         cout<<min[i];
         cout<<endl;
    }
    return 0;
}

全部评论
def AdjustArray(arr): for row in arr: max_val = max(row) min_val = min(row) row.remove(max_val) row.remove(min_val) row.insert(0, max_val) row.append(min_val) return arr
点赞 回复 分享
发布于 2023-12-26 17:00 北京

相关推荐

头像
04-17 09:29
已编辑
湖南农业大学 后端
睡姿决定发型丫:本硕末9也是0offer,简历挂了挺多,只有淘天 美团 中兴给了面试机会,淘天二面挂,美团一面kpi面,中兴一面感觉也大概率kpi(虽然国企,但一面0技术纯聊天有点离谱吧)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务