zoukankan      html  css  js  c++  java
  • 544B. Sea and Islands

    题目链接

    题意:

    n*n的里面全是S的方格中,填充L,若填充的L上下左右都没有相邻的L则是一个快,问题是能否形成k个块

    n可以去奇数也可以去偶数

    MP0WN{78F$H4SNHZV8{)_`A

    只要我们输出满足条件的一个结果就好了

    对于从0 - n-1的矩阵下标,横纵坐标之和对于上面的两个图

    画下划线的是符合条件的块,并且每个块只含有一个L

    只需要对下边和是偶数的位置值为L,就可以了。

    n是奇数时候最多有 n*n/2+ 1 个块

    n是偶数时候最多有 n*n 个块

    Java程序:

    import java.util.Scanner;
    
    
    public class B544 {
        static void run(){
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int k = sc.nextInt();
            int x= ((n*n)>>1);
            // 奇数 + 1 个块
            if(n%2==1) x++;
            if(k>x){
                System.out.println("NO");
                return;
            }
            System.out.println("YES");
            for(int i = 0 ;i<n;i++){
                for(int j=0;j<n;j++){
                    // 偶数下标和 值为 L 
                    if(k>0 &&(i+j)%2==0){
                        System.out.print("L");
                        k--;
                    }else
                        System.out.print("S");
                }
                System.out.println();
            }
        }
        public static void main(String[] args){
            run();
        }
    }

    Python程序:

    a,b=map(int,raw_input().split())
    grid=[['S' for i in xrange(a)]for j in xrange(a)]
    for i in xrange(a):
        for j in xrange(a):
            if i%2==j%2 and b:
                b-=1
                grid[i][j]='L'
    if b:print 'NO'
    else:
        print 'YES'
        for i in grid:print ''.join(i)
  • 相关阅读:
    【转】Android开发中Handler的使用
    【转】关于微信开发者平台移动应用获取签名解决问题
    AndroidStudio开发工具快捷键
    进程与线程
    【转】Git常用命令
    Java中内存空间的分配及回收
    【转】Github入门教程
    周记
    本周工作内容及感想
    总结
  • 原文地址:https://www.cnblogs.com/bbbblog/p/4712187.html
Copyright © 2011-2022 走看看