2017 08 11 小结

来源:互联网 发布:制作简单 进销存 软件 编辑:程序博客网 时间:2024/04/28 00:27

今天只打了一个程序,变换矩阵,也就是对矩阵类型的变幻做出判断。这大概算是一个简单的程序意味着我已经能将图形成像了,通过n*n方阵的变换,我已是更加清楚了二维数组

拿道题的首先我先将题目与之前的题目进行对比,发现与之前的三道题有异曲同工之妙。

1.顺时针旋转

2.逆时针旋转

3.倒置.

于是我对题目作出判断是将图形的变幻进行集合,再判断。集合的过程进行的很顺利,但判断的过程出现了问题。第一次,我用大循环套IF直接对所有可能进行判断,结果是自然。第二次,我通过小循环套IF进行直接判断,虽说失败了,但给了我一个启发——为何不换元之后再进行判断呢?我尝试间接的判断,通过每次对应位置正确的数量来进行修改。按理该是AC可连样例都没过。于是乎,静态查错。果不其然是换元时的元素写反。重写,AC。

然而遗憾的是对于数据排列还是没怎么搞懂,还需多加学习!!!

今天的代码,应该还有更好的。

#include<bits/stdc++.h>using namespace std;int main(){    int n,x=0,y=0,z=0,h=0;char a[110][110],b[110][110],c[110][110],e[110][110],d[110][110];    cin>>n;for(int i=1;i<=n;i++)//第一组数据 {for(int j=1;j<=n;j++)cin>>a[i][j];}for(int i=1;i<=n;i++)//第二组数据 {for(int j=1;j<=n;j++)cin>>d[i][j];}for(int i=1;i<=n;i++)//顺时针 {for(int j=1;j<=n;j++){b[i][j]=a[n-j+1][i];}}    for(int i=1;i<=n;i++)//逆时针 {for(int j=1;j<=n;j++){c[i][j]=a[j][n-i+1];}}for(int i=1;i<=n;i++)//倒置 {for(int j=1;j<=n;j++){e[i][j]=a[n-i+1][n-j+1];}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(e[i][j]==d[i][j]) x++;if(b[i][j]==d[i][j]) y++;if(c[i][j]==d[i][j]) z++;if(a[i][j]==d[i][j]) h++;}}if(x==n*n) cout<<3;if(y==n*n) cout<<1;if(z==n*n) cout<<2;if(h==n*n) cout<<4;if(x!=n*n&&y!=n*n&&z!=n*n&&h!=n*n) cout<<5;return 0;}