zoukankan      html  css  js  c++  java
  • POJ1416 Shredding Company(dfs)

     题目链接

    分析:

    这题从早上调到现在。也不算太麻烦,细节吧。

    每个数字都只有两种状态,加入前一序列和不加入前一序列。DFS枚举。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <algorithm>
    #include <set>
    #include <string>
    #include <queue>
    
    using namespace std;
    
    int ord[10], len, ans_a[10], tar, max_ans, cnt;
    char s[10];
    bool flag;
    
    void dfs(int cur_s, int cur_t, int cur) {
        if(cur_s+cur_t > tar) {        // error
            return ;
        }
        else if(cur == len) {    //
            int t = cur_s + cur_t;
            if(t > tar) return ;
            else if(t > max_ans) {
                cnt = 1;
                max_ans = t;
                memcpy(ans_a, ord, sizeof(ord));
            }
            else if(t == max_ans) {
                cnt++;
            }
            flag = true;
            return ;
        }
       
        ord[cur] = 1;
        dfs(cur_s+cur_t+s[cur]-'0', 0, cur+1);
    
        if(cur != len-1) {
            ord[cur] = 0;
            dfs(cur_s, (cur_t+s[cur]-'0')*10, cur+1);
        }
    }
    
    
    int main() {
        int n;
      //  freopen("my.txt", "r", stdin);
    
        while(scanf("%d %d", &tar, &n) == 2 && (n | tar)) {
            flag = false;
            max_ans = 0; cnt = 0;
    
            sprintf(s, "%d", n);
            len = strlen(s);
    
            dfs(0, 0, 0);
    
            if(!flag) printf("error
    ");
            else if(cnt >= 2) printf("rejected
    ");
            else {
                printf("%d", max_ans);
                int sn=0;
                for(int i=0; i<len; i++) {
                    if(ans_a[i] == 1) {
                        printf(" %d", sn*10+s[i]-'0');
                        sn = 0;
                    }
                    else {
                        sn = sn*10+s[i]-'0';
                    }
                }
    
                putchar('
    ');
            }
        }
    
        return 0;
    }
  • 相关阅读:
    android videoView 加载等待
    LocalBroadcastManager
    sessionStorage 、localStorage
    javascript 数组、json连接
    properties 文件注意事项
    nutz 使用beetl
    [Git/Github] ubuntu 14.0 下github 配置
    【UNIX环境编程、操作系统】孤儿进程和僵尸进程
    【操作系统】进程间通信
    【操作系统】线程
  • 原文地址:https://www.cnblogs.com/tanhehe/p/3277552.html
Copyright © 2011-2022 走看看