transform<usaco>1.2<水>(结构体的比较memcmp(&square1,&square3,sizeof(ttt)))

来源:互联网 发布:php 类方法是否存在 编辑:程序博客网 时间:2024/06/14 22:10

the reason of failure:1、是只进行一次操作然后选出数字最小的编号,而不是操作N次然后找出最小操作次数能达到结果图案,认真读题.

thinking:按照题目跟着模拟就好.


代码:

/*  PROG: transform  LANG: C++     ID: me     */  #include <bits/stdc++.h>using namespace std;struct ttt{char x[11][11];}; ttt  square0,square1,square2,square3;ttt walked;int n;queue<ttt>qq;void fan90(){for(int i=0;i<n;i++)for(int j=0;j<n;j++)square3.x[j][n-1-i]=square1.x[i][j];}void fan180(){for(int i=0;i<n;i++)for(int j=0;j<n;j++)square3.x[n-1-i][n-1-j]=square1.x[i][j];}void fan270(){for(int i=0;i<n;i++)for(int j=0;j<n;j++)square3.x[n-j-1][i]=square1.x[i][j];}void fanshe(){for(int i=0;i<n;i++)for(int j=0;j<n;j++)square3.x[i][n-j-1]=square1.x[i][j];}void zhuhe(int q){fanshe();if(q==0)for(int i=0;i<n;i++)for(int j=0;j<n;j++)square0.x[j][n-1-i]=square3.x[i][j];if(q==1)for(int i=0;i<n;i++)for(int j=0;j<n;j++)square0.x[n-1-i][n-1-j]=square3.x[i][j];if(q==2)for(int i=0;i<n;i++)for(int j=0;j<n;j++)square0.x[n-j-1][i]=square3.x[i][j];}int main(){int i,j,k,f1=7;freopen("transform.in","r",stdin);freopen("transform.out","w",stdout);cin >> n;for(i=0;i<n;i++)for(j=0;j<n;j++) cin >> square1.x[i][j]; for(i=0;i<n;i++)for(j=0;j<n;j++) cin >> square2.x[i][j]; if(memcmp(&square1,&square2,sizeof(ttt))==0)f1=6; fan90(); for(i=0;i<3;i++){zhuhe(i);//for(j=0;j<n;j++){//for(k=0;k<n;k++)//cout << square0.x[j][k];//cout << endl;}if(memcmp(&square0,&square2,sizeof(ttt))==0)f1=5;}fanshe();if(memcmp(&square3,&square2,sizeof(ttt))==0)f1=4;fan270();if(memcmp(&square3,&square2,sizeof(ttt))==0)f1=3;fan180();if(memcmp(&square3,&square2,sizeof(ttt))==0)f1=2;fan90();if(memcmp(&square3,&square2,sizeof(ttt))==0)f1=1;cout << f1 << endl;return 0;}


0 0
原创粉丝点击