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)
  • 相关阅读:
    JDBC
    过滤器
    Servlet-web.xml 常见配置
    Servlet-HttpSession接口
    Servlet-Cookie对象
    Servlet-HttpServlet对象
    kmp算法及应用
    线段树入门到自闭
    tarjan算法与拓扑排序
    马拉车模板
  • 原文地址:https://www.cnblogs.com/theskulls/p/4712187.html
Copyright © 2011-2022 走看看