zoukankan      html  css  js  c++  java
  • poj 1017 Packets

    poj 1017 http://poj.org/problem?id=1017

    原本bug超多的代码尴尬

    #include<stdio.h>
    int  main()
    {
        int a[7];
        while(scanf("%d %d %d %d %d %d",&a[1],&a[2],&a[3],&a[4] ,&a[5],&a[6]) &&(a[1]+a[2]+a[3]+a[4]+a[5]+a[6] != 0))
        {
            int s = 0,k = 0, t = 0;
            /*if(a[2]>=9)
    		{
    			s = a[2]/9;		a[2] = a[2] - 9*(a[2]/9);
    		}*/
            if(a[5] != 0)
            {
                if(a[1] > 11*a[5])
                    a[1] = a[1] - 11*a[5];
                else
                    a[1] = 0;
    			//printf("一:a[1] = %d,a[2] = %d
    ",a[1],a[2]);
            }
            if(a[4] != 0)
            {
                if(a[2] > 5*a[4])
                    a[2] = a[2] - 5*a[4];
                else
                    {
    
                        if((20*a[4] - 4*a[2]) < a[1])
                            a[1]  = a[1] - (20*a[4] - 4*a[2]);
                        else
                            a[1] = 0;
    					a[2] = 0;
                    }
    			//printf("二:a[1] = %d,a[2] = %d
    ",a[1],a[2]);
            }
    		if(a[3] != 0)
            {
                if((a[3] % 4) != 0)
                {
                    k = 7 - 2 * (a[3] % 4);
                    if(a[2] > k)
                    {
                        a[2] = a[2] - k;
                        t = 36 - 9*(a[3] % 4) - 4*k;
                        if(t < a[1]) a[1] = a[1] - t;
                        else         a[1] = 0;
    
                    }
                    else
    				{
    					if(a[1] > ((36-9*(a[3]%4))-4*a[2])) a[1] = a[1] - ((36-9*(a[3]%4))-4*a[2]);
    					else         a[1] = 0;
    					a[2] = 0;
    				}
    			}
    			//printf("三:a[1] = %d,a[2] = %d
    ",a[1],a[2]);
            }
            if(a[2] != 0)
    		{
    			//a[2] = a[2]%9;
    			a[1] -= 36 - (a[2]%9)*4;
    		}
           // printf("四:a[1] = %d,a[2] = %d
    ",a[1],a[2]);
            /*for(int i=1;i<7;i++) printf("a[%d] = %d	",i,a[i]);
            printf("
    ");*/
            s = a[6] + a[5] + a[4] +(a[3] + 3)/4 + (a[2]+8)/9 + (a[1] + 35)/36;
            printf("%d
    ",s);
        }
    }
    


    附上别人的代码

    http://blog.csdn.net/dongfengkuayue/article/details/6461374

    #include <stdio.h>
    int main()
    {
    	int N, a, b, c, d, e, f, y, x;//N用来存储需要的箱子数目,y用来存储 2*2 的空位数目
    	// x 用来存储 1*1 的空位数目。
    	int u[4] = {0, 5, 3, 1};
       //数组u 表示3*3 的产品数目分别是 4的倍数,4 的倍数+1, 4 的倍数+2, 4 的倍数+3
       //时,为3*3的产品打开的新箱子中剩余的 2*2的空位的个数
    
    	while (1)
    	{
    		scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f);
    
    		if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0 && f == 0)
    		{
    			break;
    		}
    
    		N = f + e + d + (c + 3) / 4;
    	    //这里有一个小技巧 - (c+3)/4  正好等于 c 除以4向上取整的结果,下同
    		y = 5 * d + u[c % 4];//每一个4*4的箱子装过后还可以再装5个2*2的箱子
    
    		//还有3*3的箱子如果没填满6*6的箱子的话,也可以用来装2*2的箱子
    		//5*5的箱子则只能装1*1的情况了
    		if (b > y)
    		{
    			N += (b - y + 8) / 9;    //如果要装的2*2的箱子的数目比提供的空间要多,
    		}
    
    		//那么多的部分要新开一些箱子
    		x = 36 * N - 36 * f - 25 * e - 16 * d - 9 * c - 4 * b;
    
    		if (a > x)
    		{
    			N += (a - x + 35) / 36;
    		}
    
    		printf("%d
    ", N);
    	}
    }
    
    


    www.cnblogs.com/tenlee
  • 相关阅读:
    Redis使用小结
    MongoDB中的变更通知
    发布一个从迅雷下载字幕的小工具
    在Windows下通过netsh命令实现端口映射
    .net core在Linux ARM板上运行
    通过WinAPI播放PCM声音
    spring中scope作用域(转)
    Spring <context:annotation-config/> 解说(转)
    Jenkins+Maven+SVN快速搭建持续集成环境(转)
    maven中跳过单元测试(转)
  • 原文地址:https://www.cnblogs.com/tenlee/p/4420162.html
Copyright © 2011-2022 走看看