本地能过OJ上啥也不输出
查看原帖
本地能过OJ上啥也不输出
855093
0x00AC3375楼主2023/7/13 09:16

我记得scanf不存在\r\n这种问题的

#include<iostream>
using namespace std;
//使用一个二维数组表示方格纸可见部分和遮挡部分 
bool vision[1010][1010] = { 0 };
//顺时针转动90°, 180°或270° 
bool v90[1010][1010] = { 0 }, v180[1010][1010] = { 0 }, v270[1010][1010] = { 0 };
char content[1010][1010];
int n; 
//输入内容
void input(void)
{
	cin >> n;
	//输入原始的格子纸和内容矩阵
	for (int i = 0; i <= n - 1; i += 1) scanf("%s", vision[i]);
	for (int i = 0; i <= n - 1; i += 1) scanf("%s", content[i]);
	return;
}
//计算格子纸转动90°的结果
void rt90(void)
{
	//将原始矩阵顺时针旋转90°
	for (int i = 0; i <= n - 1; i += 1) for (int j = 0; j <= n - 1; j += 1) v90[i][j] = vision[j][n - 1 - i];
	return;
}
//将旋转90°的结果再旋转90°就是转动180°的结果
void rt180(void)
{
	for (int i = 0; i <= n - 1; i += 1) for (int j = 0; j <= n - 1; j += 1) v180[i][j] = v90[j][n - 1 - i];
	return;
}
//再旋转90°得到转动270°的结果
void rt270(void)
{
	for (int i = 0; i <= n - 1; i += 1) for (int j = 0; j <= n - 1; j += 1) v270[i][j] = v180[j][n - 1 - i];
	return;
}

int main()
{
	input();
	rt90();
	rt180();
	rt270();
	for (int i = 0; i <= n - 1; i += 1) for (int j = 0; j <= n - 1; j += 1) if (vision[i][j] == 79) putchar(content[i][j]);
	for (int i = 0; i <= n - 1; i += 1) for (int j = 0; j <= n - 1; j += 1) if (v270[i][j] == 79) putchar(content[i][j]);
	for (int i = 0; i <= n - 1; i += 1) for (int j = 0; j <= n - 1; j += 1) if (v180[i][j] == 79) putchar(content[i][j]);
	for (int i = 0; i <= n - 1; i += 1) for (int j = 0; j <= n - 1; j += 1) if (v90[i][j] == 79) putchar(content[i][j]);
	return 0;
}
2023/7/13 09:16
加载中...