zoukankan      html  css  js  c++  java
  • [ 9.11 ]CF每日一题系列—— 441C暴力模拟

    Description:

      n * m 的地图,建设k个管道管道只能横竖走,且长度大于等于2,问你任意一种建设方法

    Solution:
      图里没有障碍,所以先把前k - 1个管道每个分2个长度,最后一个管道一连到底

    Code:

    PS:今天时间没来的急,其实函数可以封装一下的,虽然都是暴力,但也得暴力的优美不是??

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    int main()
    {
        int n,m,k;
        while(~scanf("%d%d%d",&n,&m,&k))
        {
            int all = n * m;
            int num = 0;
            int i = 1;
            int x = 1;
            int y = 1;
            while(x <= n && y <= m)
            {
                while(y <= m)
                {
                    if(i < k && num == 0)
                    {
                        printf("%d %d %d",2,x,y);
                        ++num;
                    }
                    else if(i < k && num == 1)
                    {
                        printf(" %d %d
    ",x,y);
                        num = 0;
                        ++i;
                    }
                    else if(i == k)
                    {
                        ++i;
                        printf("%d %d %d",all - k * 2 + 2,x,y);
                    }
                    else if(i > k)
                    {
                        printf(" %d %d",x,y);
                    }
                    y++;
                }
                y--;
                x++;
                if(x > n)break;
                while(y >= 1)
                {
                    if(i < k && num == 0)
                    {
                        printf("%d %d %d",2,x,y);
                        ++num;
                    }
                    else if(i < k && num == 1)
                    {
                        printf(" %d %d
    ",x,y);
                        num = 0;
                        ++i;
                    }
                    else if(i == k)
                    {
                        ++i;
                        printf("%d %d %d",all - k * 2 + 2,x,y);
                    }
                    else if(i > k)
                    {
                        printf(" %d %d",x,y);
                    }
                    y--;
                }
                y++;x++;
            }
            printf("
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    2017-3-7 leetcode 66 119 121
    2017-3-6 leetcode 118 169 189
    2017-3-5 leetcode 442 531 533
    c++ std
    2017-3-4 leetcode 414 485 495
    2017-3-3 leetcod 1 35 448
    想做手游
    编程规范
    1165: 零起点学算法72——首字母变大写
    1164: 零起点学算法71——C语言合法标识符(存在问题)
  • 原文地址:https://www.cnblogs.com/DF-yimeng/p/9630697.html
Copyright © 2011-2022 走看看