zoukankan      html  css  js  c++  java
  • 买不到的数目

    题目描述
    小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。 
    小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买  10  颗糖。 
    你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。 
    本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。 
    输入
    两个正整数,表示每种包装中糖的颗数(都不多于1000) 
    输出
    一个正整数,表示最大不能买到的糖数 
    样例输入
    4  7 
    样例输出
    17
    

    第一个代码:(正确%50) 

    //不计算简单做标记
     
    #include<iostream>
    #include<cstring>
    using namespace std;
    const int maxn=1000010;
    int book[maxn];
    int m,n;
    void gcd(int x){
        if(x>1000) return;
        if(book[x]) return; 
        book[x]=1;
        x+=m;
        gcd(x);
        x-=m;
        x+=n;
        gcd(x);
    } 
    int main()
    {
       while(cin>>m>>n){
       memset(book,0,sizeof(book));
       gcd(0);
       book[0]=0;
    //   cout<<"hello"<<endl;
       for(int i=1000;i>=1;i--)
       if(!book[i]){
           if(i==0) cout<<"-1"<<endl;
        else cout<<i<<endl;
        break;}
    }
    
    }
    View Code

    通过累加填数这个过程我不好把控,我觉得就此鄙弃。。。

    分析:联想筛选算法  直接标记(简单可控)

    复习代码:

    //不计算简单做标记
    #include<iostream>
    #include<cstring>
    using namespace std;
    const int maxn=1000010;
    int book[maxn];
    int m,n,i,j;
    int test[2];
    int main()
    {
       while(cin>>m>>n){
           test[0]=m;
           test[1]=n;
       memset(book,0,sizeof(book));
       book[m]=1;
       book[n]=1;
       for(i=0;i<2;i++){
           for(j=test[i]+1;j<=maxn;j++){
               if(book[j-test[i]]) book[j]=1;
           }
       }
       for(i=maxn;i>=1;i--){
           if(!book[i]) {
               cout<<i<<endl;
               break;
           }
       }
    }
    return 0;
    }
    View Code
  • 相关阅读:
    oracle 安装
    C++中 接口的定义 COM
    linux查看及改变运行级别
    BSD Apache GPL LGPL MIT
    DES MAC PIN HEX
    c语言字符输出格式化
    oracle
    Windows C++ 子目录数量
    GetProcAddress 宏
    How do I install Adobe Flash on Debian Wheezy?
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/10557345.html
Copyright © 2011-2022 走看看