任意给定一个n*n的矩阵,矩阵的行数与列数均为n。你的任务是通过行变换,使得矩阵每行元素的平均值按递增顺序排列。如果出现有的行平均值相同的情况,则按照原顺序输出。
输入格式:
共n+1行,第一行为一个整数n代表矩阵的行数(列数),n的范围是1—100。后边n行为n*n个整数,即此矩阵的元素。矩阵元素的绝对值不会超过1000000。
输出格式:
共n行,为经过行变换后的新矩阵。每行的每个元素用空格分隔,注意最后一个元素后为换行符。具体见样例。
输入样例:
3
5 5 5
3 3 3
1 1 1
输出样例:
1 1 1
3 3 3
5 5 5
来都来了点个关注呗(持续更新答案)
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][n+1];
int i,j,k;
int x,y,sum;
for(i=0;i<n;i++)
{
a[i][n]=0;
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
a[i][n]=a[i][n]+a[i][j];
}
}
for(i=0;i<n-1;i++)
{
sum=a[i][n];
y=i;
for(j=i;j<n;j++)
{
if(sum>a[j][n])
{
sum=a[j][n];
y=j;
}
}
for(k=y;k>i;k--)
{
for(int l=0;l<=n;l++)
{
x=a[k][l];
a[k][l]=a[k-1][l];
a[k-1][l]=x;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d",a[i][j]);
if(j==n-1)
printf("\n");
else
printf(" ");
}
}
return 0;
}