求助!检查了好久,感觉思路没问题,可就是只过了测试点1(c语言)
查看原帖
求助!检查了好久,感觉思路没问题,可就是只过了测试点1(c语言)
1132568
pmm01楼主2023/10/19 23:26
#include <stdio.h>

int n;
char ch1[15][15], ch2[15][15], ch[15][15], c[15][15]; //ch存放ch1变换后的图案

int one() {
	for (int i = 0; i < n; i++) { //顺时针90度
		for (int j = 0; j < n; j++) {
			ch[j][(n - 1) - i] = ch1[i][j];
		}
	}
	for (int i = 0; i < n; i++) {//判断是否相等
		for (int j = 0; j < n; j++) {
			if (ch[i][j] != ch2[i][j])
				return 0;
		}
	}
	return 1;
}

int two() {
	for (int i = 0; i < n; i++) { //顺时针180度
		for (int j = 0; j < n; j++) {
			ch[(n - 1) - i][(n - 1) - j] = ch1[i][j];
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			if (ch[i][j] != ch2[i][j])
				return 0;
		}
	}
	return 1;
}

int three() {
	for (int i = 0; i < n; i++) { //顺时针270度
		for (int j = 0; j < n; j++) {
			ch[(n - 1) - j][i] = ch1[i][j];
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			if (ch[i][j] != ch2[i][j])
				return 0;
		}
	}
	return 1;
}

int four() {
	for (int i = 0; i < n; i++) { //反射
		for (int j = 0; j < n; j++) {
			ch[i][(n - 1) - j] = ch1[i][j];
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			if (ch[i][j] != ch2[i][j])
				return 0;
		}
	}
	return 1;
}

int five() {
	four();

	for (int i = 0; i < n; i++) {//用c保留ch1,执行完下面代码后ch1值不是原来的了
		for (int j = 0; j < n; j++) {
			c[i][j] = ch1[i][j];
		}
	}

	for (int i = 0; i < n; i++) {//把ch变形后的值给ch1,方便下面调用函数
		for (int j = 0; j < n; j++) {
			ch1[i][j] = ch[i][j];
		}
	}

	if (one()) {
		return 1;
	} else if (two()) {
		return 1;
	} else if (three()) {
		return 1;
	}

	return 0;
}

int six() {
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			if (c[i][j] != ch2[i][j])
				return 0;
		}
	}
	return 1;
}

int main() {
	int m, ans = 0; //m存放回车符
	scanf("%d", &n);

	for (int i = 0; i < n; i++) { //获取第一个图案
		scanf("%c", &m);
		for (int j = 0; j < n; j++) {
			scanf("%c", &ch1[i][j]);
		}
	}

	for (int i = 0; i < n; i++) { //获取第二个图案
		scanf("%c", &m);
		for (int j = 0; j < n; j++) {
			scanf("%c", &ch2[i][j]);
		}
	}

	if (one()) {
		ans = 1;
	} else if (two()) {
		ans = 2;
	} else if (three()) {
		ans = 3;
	} else if (four()) {
		ans = 4;
	} else if (five()) {
		ans = 5;
	} else if (six()) {
		ans = 6;
	} else {
		ans = 7;
	}

	printf("%d", ans);

	return 0;
}
2023/10/19 23:26
加载中...