zoukankan      html  css  js  c++  java
  • CF915C Permute Digits

    思路:

    从左到右贪心放置数字,要注意判断这个数字能否放置在当前位。

    实现:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 int cnt[11], buf[11];
     5 
     6 bool check(ll t, ll b)
     7 {
     8     memcpy(buf, cnt, sizeof(int) * 11);
     9     for (int i = 0; i <= 9; i++)
    10     {
    11         while (buf[i]) { t *= 10; t += i; buf[i]--; }
    12     }
    13     return t <= b;
    14 }
    15 
    16 int main()
    17 {
    18     string a, b;
    19     while (cin >> a >> b)
    20     {
    21         int x = a.length(), y = b.length();
    22         for (int i = 0; i < 11; i++) cnt[i] = 0;
    23         for (int i = 0; i < x; i++) cnt[a[i] - '0']++;
    24         ll ans = 0;
    25         bool flg = x < y ? true : false;
    26         for (int j = y - 1; j > y - x - 1; j--)
    27         {
    28             int k = flg ? 9 : b[y - 1 - j] - '0';
    29             for (; k >= 0; k--)
    30             {
    31                 if (!cnt[k]) continue;
    32                 cnt[k]--;
    33                 if (check(ans + k, stoll(b)))
    34                 {
    35                     ans += k;
    36                     if (k < b[y - 1 - j] - '0') flg = true; 
    37                     if (j != y - x) ans *= 10; 
    38                     break;
    39                 }
    40                 cnt[k]++;
    41             }    
    42         }
    43         cout << ans << endl;
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    三、checkedListBoxControl
    三、安装MyCat-Web
    三、zookeeper安装
    二、.Net 连接mycat
    一、MyCat的搭建
    二、优惠卷
    二、Docker部署应用
    【2019-05-08】感知当下
    【一句日历】2019年7月
    【读书】2019
  • 原文地址:https://www.cnblogs.com/wangyiming/p/8379981.html
Copyright © 2011-2022 走看看