【程式解題】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;

}


留言

這個網誌中的熱門文章

【程式解題】2019年4月TOI練習賽新手組 - 滿意度調查 (Survey of Satisfaction) C解法(註解版)

【程式解題】 ZeroJudge a038數字翻轉 C解法(逐行註解)