zoukankan      html  css  js  c++  java
  • 题解 P6194 【[EER1]苏联人】

    这道题是一道非常良心的签到题但我却错了好几次(雾

    (Solution)

    这道题有一个坑点,就是你不能一边读入一边就处理了,我就栽在了这个坑里。处理战车和主教需要用到三重循环,前两重遍历横纵坐标,第三重遍历战车或主教能攻击到的位置,战车和主教每个都用四个单重循环来遍历位置,具体内容参见代码。

    (code)

    //#include<bits/stdc++.h>//万能头文件
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;//标准数据库
    char ch[8][8];
    bool ans[8][8];
    int main()
    {
        for(int i=0;i<8;i++) scanf("%s",ch[i]);//现将整个棋盘输入进去
        for(int i=0;i<8;i++)//遍历8行
        {
            for(int j=0;j<8;j++)//遍历8列
            {
                if(ch[i][j]=='R')//如果是战车
                {
                    ans[i][j]=1;//先将自己站的位置标1
                    for(int k=i-1;k>=0 && ch[k][j]=='.';k--) ans[k][j]=1;//这个战车的上方不能放国王,所以全都设为1
                    for(int k=i+1;k<8 && ch[k][j]=='.';k++) ans[k][j]=1;//这个战车的下方也不能放国王,所以也全都设成1
                    for(int k=j-1;k>=0 && ch[i][k]=='.';k--) ans[i][k]=1;//同理这个战车的z左边也不能放国王
                    for(int k=j+1;k<8 && ch[i][k]=='.';k++) ans[i][k]=1;//同理这个战车的右边也不能放国王
                }
                else if(ch[i][j]=='B')//如果是主教
                {
                    ans[i][j]=1;//先将自己的位置标1
                    for(int k=i-1,l=j-1;k>=0 && l>=0 && ch[k][l]=='.';k--,l--) ans[k][l]=1;//左上方不能放国王
                    for(int k=i+1,l=j+1;k<8 && l<8 && ch[k][l]=='.';k++,l++) ans[k][l]=1;//右下方也不能放国王
                    for(int k=i-1,l=j+1;k>=0 && l<8 && ch[k][l]=='.';k--,l++) ans[k][l]=1;//右上方也不能放国王
                    for(int k=i+1,l=j-1;k<8 && l>=0 && ch[k][l]=='.';k++,l--) ans[k][l]=1;//左下方也不能放国王
                }
            }
        }
        for(int i=0;i<8;i++)
        {
            for(int j=0;j<8;j++) printf("%d",!ans[i][j]);//因为上面不行的地方全取的是1,所以输出时取反即可
            puts("");
        }
        return 0;
    }
    

    记得留赞呦,Thanks♪(・ω・)ノ

  • 相关阅读:
    四大组件的工作过程
    理解Window和WindowManager
    Android中的动画
    View的工作原理
    62、滑动窗口的最大值
    61、数据流中的中位数
    60、二叉搜索树的第k个结点
    59、序列化二叉树
    58、把二叉树打印成多行
    57、按之字形顺序打印二叉树
  • 原文地址:https://www.cnblogs.com/ForeverOIer/p/12660406.html
Copyright © 2011-2022 走看看