本次的题解一定让大家享受脑细胞碰撞与再生死亡的感受!定然酣畅淋漓!请耐心的读完
简称:让脑袋死机。。。
象战
老规矩先分析在打码:
注意到题目告诉我们:四个角落是不能放的
那么
我们设象在(i,j).(注意:是i行j列)即:
此时的象在(4,4).
它的对角线对应的格子与相应的坐标,(蓝色为主对角线对应坐标,橙色反之):
不难发现主对角线的格子所对应的坐标i-j==0,而副对角线每个格子所对应坐标i+j==上一次的
即主对角线的i-j==0,副对角线的i+j始终相等!
代码:
#include<bits/stdc++.h>
using namespace std;
char a;
int b[10][10],c[20],d[20];//c与d是记录两条斜边(对角线,主与副)
int main(){
//将字符棋盘转换成一个只有0与1的棋盘
for(int i=1;i<=8;i++){
for(int j=1;j<=8;j++){
cin>>a;
if(a=='#'){
b[i][j]=1;
}
}
}
for(int i=1;i<=8;i++){
for(int j=1;j<=8;j++){
if(b[i][j]==1){//判断格子有没有涂红墨水
c[i+j]++;
d[i-j+8]++;//i-j可能为负,加上8来避免
}
}
}
for(int i=1;i<=8;i++){
for(int j=1;j<=8;j++){
if(c[i+j]>1&&d[i-j+8]>1){
printf("%d %d",i,j);
}
}
}
}