zoukankan      html  css  js  c++  java
  • 剪缎带

    露米娅有一条很长很长的缎带,缎带的长度为n,她想要把缎带剪成一段一 段的小缎带,并且要满足: 1,每段小缎带长度为a或b或c。 2,小缎带的数量尽可能多。 ★数据输入 输入一行包括四个正整数n,a,b,c(1<=n,a,b,c<=4000),a,b,c可能相等。 ★结果输出 输出仅有一个数,为小缎带可能的最多数目,题目保证必有解。

    错误

    1.             # include<stdio.h>  
    2. int main()  
    3. {  
    4.   void swap(int x,int y);  
    5.   int a,b,c,n,i,j,t,max=0;  
    6.   scanf("%d %d %d %d",&n,&a,&b,&c);  
    7.   if(a>b){swap(a,b);}  
    8.   if(a>c){swap(a,c);}  
    9.   if(b>c){swap(b,c);}  
    10.     
    11.   if(n%a==0)  
    12.   {  
    13.     max=n/a;  
    14.   }  
    15.   else   
    16.   {  
    17.        for(i=1;1;i++)  
    18.        {  
    19.           if((n-i*b)%a==0)  
    20.           {  
    21.                 t=(n-i*b)/a +i;  
    22.                 if(t>max)  
    23.                 max = t;  
    24.                 break;  
    25.           }  
    26.        }  
    27.        if(max!=0)  
    28.      {  
    29.        for(i=1;1;i++)  
    30.        {  
    31.           if((n-i*c)%a==0)  
    32.           {  
    33.                 t=(n-i*c)/a +i;  
    34.                 if(t>max)  
    35.                 max = t;  
    36.                 break;  
    37.           }  
    38.        }  
    39. }  
    40.          if(max!=0)  
    41.     {  
    42.        for(i=1;1;i++)  
    43.        {  
    44.           for(j=1;1;j++)  
    45.           {  
    46.              if((n-i*c-j*b)%a==0)  
    47.                 {  
    48.                     t=(n-i*c-j*b)/a +i+j;  
    49.                 if(t>max)  
    50.                 max = t;  
    51.                 break;  
    52.                 }     
    53.           }  
    54.        }  
    55. }  
    56.          if(max!=0)  
    57.     {  
    58.         for(i=1;1;i++)  
    59.        {  
    60.           for(j=1;1;j++)  
    61.           {  
    62.              if((n-i*b-j*c)%a==0)  
    63.                 {  
    64.                     t=(n-i*b-j*c)/a +i+j;  
    65.                 if(t>max)  
    66.                 max = t;  
    67.                 break;  
    68.                 }     
    69.           }  
    70.        }  
    71. }  
    72.          
    73.          
    74.   }  
    75.     
    76.   printf("%d",max);  
    77.   return 0;  
    78.     
    79. }  
    80.   
    81. void swap(int x,int y)  
    82. {  
    83.      int t;  
    84.      t=x;  
    85.      x=y;  
    86.      y=t;  
    87. }  
    88.   四个for的蠢分类  全错!!!!
    1.   正确
      1.    # include<stdio.h>  
      2. int main()  
      3. {  
      4.   int a,b,c,n,i,j,t,max=-1;  
      5.   scanf("%d %d %d %d",&n,&a,&b,&c);  
      6.   if(a>b){t=a;a=b;b=t;}  
      7.   if(a>c){t=a;a=c;c=t;}  
      8.   if(b>c){t=b;b=c;c=t;}  
      9.   
      10.     
      11.   for(i=0;1;i++)    // n-(i×c)-(j*b) 与循环一起用  涵括了所有情况  i=0时各种 i=1时各种   等等
      12.        {  
      13.         if((n-i*c) < 0)   //尽量将循环终止条件写在循环开始前
      14.           break;  
      15.           for(j=0;1;j++)  
      16.           {  
      17.             if( ( n-(i*c)-(j*b) ) < 0 )    //先判断 毕竟如果小于0就不能再运算 以免模一下出现不可预知的错误
      18.                  break;  
      19.              if((n-i*c-j*b)%a==0)  
      20.                 {  
      21.                     t =( n-i*c-j*b)/a +i+j;  
      22.                 if(t>max)  
      23.                 max = t;  
      24.                 }  
      25.               
      26.           }  
      27.             
      28.        }  
      29.   
      30.   
      31.   printf("%d",max);  
      32.   return 0;  
      33.     
      34. }  
    1.  
  • 相关阅读:
    浅议tomcat与classloader
    业务系统的JVM启动参数推荐
    Nginx负载趟过的坑
    linux 建立反向shell
    rpm -e 包名 卸载安装的二进制包
    源码安装natcat
    取消密码登录
    ssh-copy-id 安全地复制公钥到远程服务器上
    iptables允许一个ip访问本机的某个端口
    zookeeper 安装 配置集群
  • 原文地址:https://www.cnblogs.com/wshyj/p/6052441.html
Copyright © 2011-2022 走看看