当前位置: 代码迷 >> 综合 >> 元素放置-xdoj
  详细解决方案

元素放置-xdoj

热度:86   发布时间:2023-12-06 09:20:04.0

标题
元素放置

描述
定义一个一维整形数组num[50],输入正整数m、n(2≤m≤n≤7),输入一个m*n整形矩阵(值小于100),编写函数place()完成矩阵元素S型放置,从小到大排列,主函数完成数组输入和输出。

时间限制
1    

内存限制
10000    

类别
1

输入说明
输入正整数m和n(2≤m≤n≤7),输入一个m*n整形矩阵,含m*n个元素(值小于100)。

输出说明
格式输出:按行输出处理后的矩阵,S型排列,%3d,每行换行,最后一行不换行。

输入样例
3 3
15 14 21
34 22 37
40 16 50

输出样例
 16 15 14
 21 22 34
 50 40 37
提示
S型排列,输出格式%3d,每行换行,最后一行不换行。
 

#include<stdio.h>
void sort(int *num,int x)
{int i,j,temp;for(i=0;i<(x-1);i++){for(j=0;j<(x-1-i);j++){if(num[j]>num[j+1]){temp=num[j];num[j]=num[j+1];num[j+1]=temp;}}}
}
void place(int *num,int m,int n,int(*s)[7])
{int i,j;for(i=0;i<m;i++){if(i%2==0){for(j=(n-1);j>=0;j--){s[i][j]=*num++;}}else{for(j=0;j<n;j++){s[i][j]=*num++;}}}
}
int main()
{int m,n,i,j;int num[50]={0},s[7][7]={0};scanf("%d %d",&m,&n);for(i=0;i<m*n;i++)scanf("%d",&num[i]);sort(num,m*n);place(num,m,n,s);for(i=0;i<m;i++){for(j=0;j<n;j++)printf("%3d",s[i][j]);printf("\n");}return 0;
}