蒟蒻求助10分
查看原帖
蒟蒻求助10分
589190
YLgiegie楼主2022/11/27 09:59

代码:

#include<iostream>
using namespace std;
char a[10][10],m;
int main() {
	for(int i=0; i<8; i++)
		for(int j=0; j<8; j++) {
			cin>>a[i][j];
		}
	for(int i = 0 ; i < 8 ; i++) {
		for(int j = 0 ; j < 8 ; j++) {
			if(a[i][j] == 'R') {//R:车 , B:象
				a[i][j] == '0';
				for(int k = 0 ; k < 8; k++) {
					if(a[k][j] =='B' || a[k][j] == 'R') continue;//我的思路:遇见字母则不覆盖,便于下一次查找
					a[k][j] = '0';
				}
				for(int k = 0 ; k < 8; k++) {
					if(a[i][k] =='B' || a[i][k] == 'R') continue;
					a[i][k] = '0';
				}

			}
			if(a[i][j]=='B') {
				a[i][j] == '0';
//				a[i-1][j-1] = a[i+1][j-1] = a[i-1][j+1] = a[i+1][j+1] = '0';
				for(int k = 1 ; k <= 8; k++) {//for(1~8)
					if(a[i-k][j-k] = '.') a[i-1][j-1] = '0';//判断数组越界的同时也判断了是否为车、象 
					if(a[i+k][j-k] = '.') a[i+1][j-1] = '0';
					if(a[i-1][j+1] = '.') a[i-1][j+1] = '0';
					if(a[i+1][j+1] = '.') a[i+1][j+1] = '0';
//					a[i-1][j-1] = a[i+1][j-1] = a[i-1][j+1] = a[i+1][j+1] = '0';
				}
			}
		}
	}
	for(int i = 0 ; i < 8 ; i++) {
		for(int j = 0 ; j < 8 ; j++) {
			if(a[i][j] == '.') cout << 1;
			else cout << 0;
		}
		cout<<endl;
	}
	return 0;
//实地测试结果:车是没问题的,但象出bug了
/*
输入:
........
........
........
........
........
....B...
........
........
输出
11111111
11111111
11111111
11111111
11101011
11110111
11101011
11111111
输入
........
........
........
........
........
....R...
........
........
输出
11110111
11110111
11110111
11110111
11110111
00000000
11110111
11110111 
输入
........
........
..R.....
.R..B...
........
....B...
........
........
输出
11011111
10111111
01000000
00100000
10001011
10110111
11001011
10111111
可以看出,象感染了周围一小片,甚至把本能正常运行的车给顶成了1 
*/ 
}

WA记录

2022/11/27 09:59
加载中...