• 1614Shredding Company


    我的错误代码

    #include "iostream"
    #include "math.h"
    #include "algorithm"
    #define N 100000;
    using namespace std;
    int total,list[1000],n,m,MIN,top,step,data[1000];
    
    void dfs(int a){
      int i,j,num;
      if(total>m)return;
      if(m-total<MIN&&a==top){MIN=m-total;}
      for(i=a;i<top;i++){
        num=0;
        for(j=a;j<=i;j++){
          num=num+list[j]*pow(10,j-a);
        }
        total+=num;
        //cout<<a<<' '<<num<<' '<<total<<endl;system("pause");
        dfs(i+1);
        total-=num;
      }
    }
    
    int main(){
      int i;
      while(cin>>m>>n&&m&&n){
        top=1;step=1;
        while(n){
          list[top++]=n%10;
          n=n/10;
        }
        MIN=N;
        dfs(1);
        cout<<m-MIN<<endl;
      }
    }

    人家的代码

    // POJ1416.cpp : Defines the entry point for the console application.
    //
    
    #include <iostream>
    #include <iterator>
    #include <string>
    using namespace std;
    
    static int clonum;
    static bool repeat;
    static int sh[20];
    static int stps;
    void DFS(const string& num, int beg, int end, int cnt, int t, int stp, int shredded[20])
    {
        int cutnum = 0;
        if (end == num.size())
        {
            for (int i = beg; i < end; ++i) cutnum = cutnum * 10 + (num[i]-'0');
            cnt += cutnum;
            if (cnt == clonum)repeat = true;
            else if(cnt <= t && cnt > clonum)
            {
                shredded[stp] = cutnum;
                copy(&shredded[0],&shredded[stp + 1], &sh[0]);
                clonum = cnt;
                stps = stp;
                repeat = false;
            }
        }
        else
        {
            DFS(num, beg, end + 1, cnt, t, stp, shredded);
            for (int i = beg; i < end; ++i) cutnum = cutnum * 10 + (num[i]-'0');
            if (cnt + cutnum <= t)
            {
                shredded[stp] = cutnum;            
                DFS(num, end, end + 1, cnt + cutnum, t, stp + 1, shredded);
            }
        }
    }
    int main(int argc, char* argv[])
    {
        int t;
        string num;
        while (cin >> t >> num && t != 0 && num != "0")
        {
            int n;
            sscanf(num.c_str(),"%d",&n);
            if (n == t)
            {
                cout << t <<" " << n << endl;
                continue;
            }
            n = 0;
            for (int i = 0; i < num.size(); ++i) n += num[i] - '0';
            if (n > t )
            {
                cout << "error
    ";
                continue;
            }
            clonum = 0;
            repeat = false;
            int shredded[20];
            memset(shredded, 0, sizeof(shredded));
            DFS(num, 0, 1, 0, t, 0,shredded);
            if (repeat == true) cout << "rejected
    ";
            else
            {
                cout << clonum << " ";
                copy(&sh[0], &sh[stps + 1], ostream_iterator<int>(cout," "));
                cout<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    ecshop 调用指定分类的推荐,热卖,新品
    ecshop 首页调用指定类产品
    html常用笔记
    ecshop 修改flash图片大小
    ecshop 删除随机版权
    Java Web(一) Servlet详解!!
    Git使用总结
    git clone命令使用
    Lucene学习总结之四:Lucene索引过程分析
    Lucene学习总结之二:Lucene的总体架构
  • 原文地址:https://www.cnblogs.com/dowson/p/3349613.html
Copyright © 2020-2023  润新知