Southern and Volga Russia Qualifier 2019-2020(K. Moonbound(枚举+思维))

在这里插入图片描述在这里插入图片描述
题意:给你一个n,n是偶数,并且能构成一个nn的大方框,他在玩一个填方框的游戏,然后如果(i+j)%2==0,那么这个方框就应该放一个stone,反之就应该放一个sand,然后填方框有两种方法,但是两种方法的限制条件是一样的:
方法一:任意选一个方框,条件是这个方框必须是边界或者你填的方框和已经填的方框必须要至少有一个公共边;
方法二:任意选一个2
2的大方框,条件是这个22的方框里面必须有空的方框,同理如果你填别的22方框时候,那么就必须和已经填的方框至少有一一条公共边,所以很明显嘛,就是挨着填:
但是你会发现这个问题:
如果我按照这样的顺序填:
在这里插入图片描述
那么填第二个2的时候就不合法了;
所以我就到起来填:
在这里插入图片描述
这样填就合法了’;
所以直接两个for输出坐标就可以了(因为在填2*2方格的时候,那么肯定是左上角为出发点,题目上也说了滴);
AC代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
     while(~scanf("%d",&n)){
     int k=3*n*n/4;
     printf("%d\n",k);
     for(int i=n-1;i>=1;i-=2){
         for(int j=1;j<=n-1;j+=2){//这里不用判断奇数偶数,因为奇数+奇数肯定是偶数
                  printf("1 %d %d 1\n",i,j);
                  printf("1 %d %d 1\n",i+1,j+1);
                  printf("2 %d %d 2\n",i,j);

         }
     }
     }
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值