日常刷题单,感觉知识点有些生疏(之前测试总感觉时间不够),通过刷题,对知识点的掌握更加熟练,做题的时间也随之减少,也让我感受到了编程的乐趣。
今天主要刷的是函数与结构体
其中,赦免战俘没有做出来,逮捕失败,决定暂且放他一马,明天再去“追杀”它。
此外还做了一道题:p1205 方块转换。
对这道题分情况讨论,其实不算难,就是有点复杂,纯模拟,模拟了半天(尤其是组合,饶了我好久才解决),把逻辑想通就很简单啦。代码如下
#include <stdio.h>
#include <stdlib.h>
char a[12][12],b[12][12],c[12][12],d[12][12];
int n,i,j;
int hly1()
{
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
c[j][n-i+1]=a[i][j];
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(b[i][j]!=c[i][j])
return 0;
}
}
return 1;
}
int hly2()
{
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
c[n-i+1][n-j+1]=a[i][j];
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(b[i][j]!=c[i][j])
return 0;
}
}
return 1;
}
int hly3()
{
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
c[n-j+1][i]=a[i][j];
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(b[i][j]!=c[i][j])
return 0;
}
}
return 1;
}
int hly4()
{
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
c[i][n-j+1]=a[i][j];
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(b[i][j]!=c[i][j])
return 0;
}
}
return 1;
}
int hly5()
{
hly4();
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
a[i][j]=c[i][j];
}
}
if(hly1())
return 1;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
a[i][j]=c[i][j];
}
}
if(hly2())
return 1;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
a[i][j]=c[i][j];
}
}
if(hly3())
return 1;
return 0;
}
int hly6()
{
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(b[i][j]!=c[i][j])
return 0;
}
}
return 1;
}
void hly()
{
if(hly1()){
printf("1");
return;
}
if(hly2()){
printf("2");
return;
}
if(hly3()){
printf("3");
return;
}
if(hly4()){
printf("4");
return;
}
if(hly5()){
printf("5");
return;
}
if(hly6()){
printf("6");
return;
}
printf("7");
}
int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
scanf(" %c",&a[i][j]);
d[i][j]=a[i][j];
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
scanf(" %c",&b[i][j]);
}
}
hly();
return 0;
}