×
解除綁定,重新設定系統帳號的密碼
您的系統帳號 ID:
您的系統帳號:
您的帳號暱稱:
設定新密碼:
設定新密碼:
×
請輸入要加入的「課程代碼」
請向開設課程的使用者索取「課程代碼」
分類題庫
解題動態
排行榜
討論區
競賽區
登入
註冊
發表新討論
#20594: 求解!!知道問題後還是錯!!
qwe821526@gmail.com
(陳姵霖)
學校 : 不指定學校
編號 : 114814
×
傳送站內訊息
傳給:
主題:
內容:
來源 : [114.39.172.253]
最後登入時間 :
2020-02-22 14:54:54
b965.
2. 矩陣轉換
--
2016年3月
apcs
| From: [114.39.23.237] | 發表日期 : 2020-02-11 15:21
爬文後,發現自己問題在多空白鍵
但改正後仍錯誤
需要有人幫忙看
我是寫C語言的
希望有人幫忙謝謝^-^
#include <stdio.h>
#include <stdlib.h>
int f1(int,int); //翻轉
int f2(int,int); //旋轉
int after[10][10]; //最後的陣列
int before[10][10]; //before
int i=0,j=0;
int flag=0,count=0;//表示翻轉後,R C互換,存取表示變數 /表示旋轉幾次
int main()
{
//輸入資訊
int R,C,M; //列 行 動作數量
//int i=0,j=0;
scanf("%d %d %d",&R,&C,&M);
for(i=0;i<R;i++){
for(j=0;j<C;j++){
scanf("%d",&after[i][j]);//before[列][行]
}
}
int m1[10];
for(i=0;i<M;i++){
scanf("%d",&m1[i]);
if(m1[i]==0){
count++;
}
}
for(i=M-1;i>=0;i--){
if(m1[i]==1&&flag==0){
f1(R,C);
} else if(m1[i]==1&&flag==1){
f1(C,R);
}else if(m1[i]==0&&flag==0){
f2(R,C);
flag=1;
}else{
f2(C,R);
flag=0;
}
}
//輸出
if(count==0||count%2==0){
printf("%d %d\n",R,C);
for(i=0;i<R;i++){ //翻轉輸出
for(j=0;j<C;j++){
printf("%d",after[i][j]); //before[列][行]
if(j!=C-1){
printf(" ");
}
}
printf("\n");
}
}else{
printf("%d %d\n",C,R);
for(i=0;i<C;i++){ //翻轉輸出
for(j=0;j<R;j++){
printf("%d ",after[i][j]); //before[列][行]
if(j!=C-1){
printf(" ");
}
}
printf("\n");
}
}
return 0;
}
int f1(int R,int C){
int t;
for(i=0;i<R;i++){
for(j=0;j<(C/2);j++){
t=after[i][C-1-j];
after[i][C-1-j]=after[i][j];
after[i][j]=t;
before[i][j]=after[i][j];
before[i][C-1-j]=after[i][C-1-j];
}
}
}
int f2(int R,int C){
for(i=0;i<C;i++){
for(j=0;j<R;j++){
before[i][j]=after[j][C-1-i];
}
}
for(i=0;i<C;i++){
for(j=0;j<R;j++){
after[i][j]=before[i][j];
}
}
}
#20652: Re:求解!!知道問題後還是錯!!
qwe821526@gmail.com
(陳姵霖)
學校 : 不指定學校
編號 : 114814
×
傳送站內訊息
傳給:
主題:
內容:
來源 : [114.39.172.253]
最後登入時間 :
2020-02-22 14:54:54
b965.
2. 矩陣轉換
--
2016年3月
apcs
| From: [114.39.118.219] | 發表日期 : 2020-02-16 15:30
後來我已經寫好
而且測試通過且AC
但送出解答都NA
我是寫C語言的
希望有人幫忙謝謝^-^
#include <stdio.h>
#include <stdlib.h>
void f1(int,int); //翻轉
void f2(int,int); //旋轉
int after[10][10]; //最後的陣列
int before[10][10]; //before
int i=0,j=0;
int flag=0,count=0;//表示翻轉後,R C互換,存取表示變數 /表示旋轉幾次
void main()
{
//輸入資訊
int R,C,M; //列 行 動作數量
int i=0,j=0;
scanf("%d %d %d",&R,&C,&M);
for(i=0;i<R;i++){
for(j=0;j<C;j++){
scanf("%d",&after[i][j]);//before[列][行]
}
}
int m1[10];
for(i=0;i<M;i++){
scanf("%d",&m1[i]);
if(m1[i]==0){
count++;
}
}
for(i=M-1;i>=0;i--){
if(m1[i]==1&&flag==0){
f1(R,C);
} else if(m1[i]==1&&flag==1){
f1(C,R);
}else if(m1[i]==0&&flag==0){
f2(R,C);
flag=1;
}else{
f2(C,R);
flag=0;
}
}
//輸出
if(count==0||count%2==0){
printf("%d %d\n",R,C);
for(i=0;i<R;i++){ //翻轉輸出
for(j=0;j<C;j++){
printf("%d",after[i][j]); //before[列][行]
if(j!=C-1){
printf(" ");
}
}
printf("\n");
}
}else{
printf("%d %d\n",C,R);
for(i=0;i<C;i++){ //翻轉輸出
for(j=0;j<R;j++){
printf("%d",after[i][j]); //before[列][行]
if(j!=R-1){
printf(" ");
}
}
printf("\n");
}
}
}
void f1(int R,int C){
int t;
for(i=0;i<(R/2);i++){
for(j=0;j<C;j++){
t=after[R-1-i][j];
after[R-1-i][j]=after[i][j];
after[i][j]=t;
before[i][j]=after[i][j];
}
}
}
void f2(int R,int C){
for(i=0;i<C;i++){
for(j=0;j<R;j++){
before[i][j]=after[j][C-1-i];
}
}
for(i=0;i<C;i++){
for(j=0;j<R;j++){
after[i][j]=before[i][j];
}
}
}
ZeroJudge Forum