#20290: 在網路上都找不到有人用vector寫的 自己寫了一篇


superuserjoy@gmail.com (summeruserjoy)

學校 : 國立中興大學
編號 : 98294
來源 : [49.216.173.168]
最後登入時間 :
2024-06-16 08:38:00
b965. 2. 矩陣轉換 -- 2016年3月apcs | From: [180.204.210.235] | 發表日期 : 2019-12-24 18:18

 
我在此處建表
第一行我不用
從第二行開始
const bool force[9][3]={
0,0,0,
1,1,1,
1,0,0,
0,0,1,
0,1,0,
0,1,1,
0,0,0,
1,0,1,
1,1,0
};
 
這個表的第一項是表示行有沒有倒轉
            第二項        列
第三項則是行列輸出順序有沒有倒轉
int main(){
int R,C,M;
while(cin>>R>>C>>M){
vector<vector<int> > arr(R,vector<int>(C));
vector<int> OI(M);
int count=1;
for(int i =0; i<R ; i++){
for(int j =0; j<C ; j++){
cin>>arr[i][j];
}
}
for(int i = M -1; i >-1;i--){
cin>>OI[i];
}
for(int i =0; i < M ; i++){
這塊是我把她寫成8種類型
初始是1,逆時針轉會加一
1鏡射變5,2變8,3變7,4變6
再套上面的表
if(OI [i]==0){
count += 1;
if(count ==5|| count ==9){
count -= 4;
}
}
else{
if(count==1|| count==5){
count=abs(count-6);
}
else{
count=abs(count-10);
}
}
}
行或列的顛倒
if(force[count][0]==0){
reverse(arr.begin(),arr.end());
}
if(force[count][1]==0){
for(int i =0;i < R;i++){
reverse(arr[i].begin(),arr[i].end());
}
}
行列順序
if(force[count][2]==1){
cout<<R<<" "<<C<<endl;
for(int i =0; i < R ; i ++){
for(int j =0; j < C ; j ++){
cout<<arr[i][j];
if(j!=C-1){
cout<<" ";
}
}
cout<<endl;
}
}
else{
cout<<C<<" "<<R<<endl;
for(int j =0; j < C ; j ++){
for(int i =0; i < R ; i ++){
cout<<arr[i][j];
if(i!=R-1){
cout<<" ";
}
}
cout<<endl;
}
}
 
}
}
 
ZeroJudge Forum