【程式解題】2019年5月TOI練習賽新手組 - 第2題 座位安排(Seats) C解法
程式碼:
#include <stdio.h>
#include <stdlib.h>
int seat[100][100];
int copy[100][100];
int r,c;
void even(void){
int i,j;
for(i=0;i<r;++i){
for(j=0;j<c;++j){
if(j==0){
copy[i][j]=seat[i][c-1];
}else{
copy[i][j]=seat[i][j-1];
}
}
}
for(i=0;i<r;++i){
for(j=0;j<c;++j){
seat[i][j]=copy[i][j];
}
}
}
void odd(void){
int i,j;
for(i=0;i<r;++i){
for(j=0;j<c;++j){
if(i==0){
copy[i][j]=seat[r-1][j];
}else{
copy[i][j]=seat[i-1][j];
}
}
}
for(i=0;i<r;++i){
for(j=0;j<c;++j){
seat[i][j]=copy[i][j];
}
}
}
int main(){
int i,j;
int n;//第幾周
int x=1;
scanf("%d%d%d",&r,&c,&n);
for(i=0;i<r;++i){
for(j=0;j<c;++j){
seat[i][j]=x;
++x;
}
}
if(n==1){
for(i=0;i<r;++i){
for(j=0;j<c;++j){
printf(j==c-1? "%d":"%d ",seat[i][j]);
}
printf(i==r-1?"":"\n");
}
} else{
for(i=2;i<=n;++i){
if(i%2) odd();
else even();
}
for(i=0;i<r;++i){
for(j=0;j<c;++j){
printf(j==c-1? "%d":"%d ",seat[i][j]);
}
printf(i==r-1?"":"\n");
}
}
return 0;
}
留言
張貼留言