当前位置:编程学习 > C/C++ >>

九度1164 旋转矩阵

[cpp] 
/********************************* 
 *    日期:2013-1-29 
 *    作者:SJF0115 
 *    题号: 九度1164 
 *    题目:旋转矩阵 
 *    来源:http://ac.jobdu.com/problem.php?pid=1164 
 *    结果:AC 
 *    题意: 
 *    总结: 
**********************************/  
#include<stdio.h>   
#include<stdlib.h>   
#include<string.h>   
//旋转90°   
int Rotate(int Matrix[9][9],int n){  
    int i,j;  
    int RotateMatrix[9][9];  
    for(i = 0;i < n;i++){  
        for(j = 0;j < n;j++){  
            RotateMatrix[j][n-1-i] = Matrix[i][j];  
        }  
    }  
    for(i = 0;i < n;i++){  
        for(j = 0;j < n;j++){  
            Matrix[i][j] = RotateMatrix[i][j];  
        }  
    }  
    return 0;  
}  
//判断是否是旋转90°   
int Judge(int Matrix[9][9],int Matrix2[9][9],int n){  
    int flag = 0,i,j;  
    for(i = 0;i < n;i++){  
        for(j = 0;j < n;j++){  
            if(Matrix[i][j] != Matrix2[i][j]){  
                flag = 1;  
                break;  
            }  
        }  
    }  
    //判断失败   
    if(flag == 1){  
        return 0;  
    }  
    else{  
        return 1;  
    }  
}  
int main()  
{  
    int n,i,j;  
    freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);  
    while(scanf("%d",&n)!=EOF)  
    {  
        int Matrix[9][9],Matrix2[9][9];  
        //输入数据   
        for(i = 0;i < n;i++){  
            for(j = 0;j < n;j++){  
                scanf("%d",&Matrix[i][j]);  
            }  
        }  
        for(i = 0;i < n;i++){  
            for(j = 0;j < n;j++){  
                scanf("%d",&Matrix2[i][j]);  
            }  
        }  
        //判断   
        if(Judge(Matrix,Matrix2,n) == 1){  
            printf("0\n");  
        }  
        else{  
            Rotate(Matrix,n);  
            if(Judge(Matrix,Matrix2,n) == 1){  
                printf("90\n");  
            }  
            else{  
                Rotate(Matrix,n);  
                if(Judge(Matrix,Matrix2,n) == 1){  
                    printf("180\n");  
                }  
                else{  
                    Rotate(Matrix,n);  
                    if(Judge(Matrix,Matrix2,n) == 1){  
                        printf("270\n");  
                    }  
                    else{  
                        printf("-1\n");  
                    }  
                }  
            }  
        }  
    }  
    return 0;  
}  
 
/*********************************
 *    日期:2013-1-29
 *    作者:SJF0115
 *    题号: 九度1164
 *    题目:旋转矩阵
 *    来源:http://ac.jobdu.com/problem.php?pid=1164
 *    结果:AC
 *    题意:
 *    总结:
**********************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//旋转90°
int Rotate(int Matrix[9][9],int n){
int i,j;
int RotateMatrix[9][9];
for(i = 0;i < n;i++){
for(j = 0;j < n;j++){
RotateMatrix[j][n-1-i] = Matrix[i][j];
}
}
for(i = 0;i < n;i++){
for(j = 0;j < n;j++){
Matrix[i][j] = RotateMatrix[i][j];
}
}
return 0;
}
//判断是否是旋转90°
int Judge(int Matrix[9][9],int Matrix2[9][9],int n){
int flag = 0,i,j;
for(i = 0;i < n;i++){
for(j = 0;j < n;j++){
if(Matrix[i][j] != Matrix2[i][j]){
flag = 1;
break;
}
}
}
//判断失败
if(flag == 1){
return 0;
}
else{
return 1;
}
}
int main()
{
int n,i,j;
freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{
int Matrix[9][9],Matrix2[9][9];
//输入数据
for(i = 0;i < n;i++){
for(j = 0;j < n;j++){
scanf("%d",&Matrix[i][j]);
}
}
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,