POJ 3187 Backward Digit Sums

http://poj.org/problem?id=3187

穷竭搜索 全排列 然后按规则求和 排列之前先按升序排序

这样可以保证第一个和为k的就是符合最小序列的结果

复制代码
 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 
 7 int sum(int a[], int n)
 8 {
 9     int s[11];
10     for (int i = 0; i < n; i++)
11     {
12         s[i] = a[i];
13     }
14     while (n != 1)
15     {
16         n--;
17         for (int i = 0; i < n; i++)
18         {
19             s[i] += s[i+1];
20         }
21     }
22     return s[0];
23 }
24 int main()
25 {
26     int s,n;
27     int a[11], calc[11];
28     freopen("in.txt","r", stdin);
29     while (~scanf("%d%d", &n, &s))
30     {
31         for(int i = 0; i < n; i++)
32         {
33             a[i] = i+1;
34         }
35         do
36         {
37             for (int i =0 ;i < n; i++)
38             {
39                 calc[i] = a[i];
40             }
41             if ( sum(calc, n) == s) break;
42         }while (next_permutation(a, a+n));
43         for (int i =0 ; i < n; i++)
44         {
45             printf("%d ", calc[i]);
46         }
47         putchar('\n');
48     }
49     return 0;
50 }
复制代码

 

posted @   Lorazepam  阅读(122)  评论(0编辑  收藏  举报
编辑推荐:
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
阅读排行:
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 想让你多爱自己一些的开源计时器
· 大模型 Token 究竟是啥:图解大模型Token
· 用99元买的服务器搭一套CI/CD系统
· 当职场成战场:降职、阴谋与一场硬碰硬的抗争
点击右上角即可分享
微信分享提示