POJ
来源:互联网 发布:抢票软件 付费 编辑:程序博客网 时间:2024/06/03 09:04
3 1 2 4 4 3 6 7 9 16Behind FJ's back, the cows have started playing a more difficult game, in which they try to determine the starting sequence from only the final total and the number N. Unfortunately, the game is a bit above FJ's mental arithmetic capabilities.
Write a program to help FJ play the game and keep up with the cows.
4 16
3 1 2 4
There are other possible sequences, such as 3 2 1 4, but 3 1 2 4 is the lexicographically smallest.
题意:就是给你一个n和sum,wenni 1~n的这些数中,怎么排列,能通过如上图的方式得到的和与sum相同。
思路:当是A 就得A
若是 A B 若是 A B C A B C D
A+B A+B B+C A+B B+C C+D
A+B+B+C A+B+B+C B+C+C+D
A+B+B+B+C+C+C+D
依次类推,得到几个数就分别乘以第几层的杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){ int a[11],b[11]; int y[11][11]; int n,sum,i,j; memset(y,0,sizeof(y)); y[1][1]=1; for(i=2;i<=10;i++){ for(j=1;j<=i;j++){ y[i][j]=y[i-1][j]+y[i-1][j-1]; } } /* for(i=1;i<=10;i++){ for(j=1;j<=i;j++){ printf("%d ",y[i][j]); } printf("\n"); }*/ scanf("%d%d",&n,&sum); for(i=1;i<=n;i++) a[i]=i; do{ int sum1=0; for(i=1;i<=n;i++){ sum1+=a[i]*y[n][i]; } if(sum1==sum){ break; } }while(next_permutation(a+1,a+n+1));//排列组合 for(i=1;i<=n;i++){ if(i!=n) printf("%d ",a[i]); else printf("%d\n",a[i]); }}
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- Python 基础知识教程
- CXF对Interceptor拦截器的支持
- Spark Graphx 进行团伙的识别(community detection)
- ORACLE---自定义function语法
- Codeforces Gym 100623E Problem E. Enchanted Mirror
- POJ
- zookeeper windows 入门安装和测试
- Reinforcement Learning (DQN) tutorial
- 稀疏矩阵
- java爬虫之爬取博客园推荐文章列表
- linux配置tigervnc连接远程桌面
- 欢迎使用CSDN-markdown编辑器
- 蓝桥杯 入门训练 圆的面积
- http://mp.weixin.qq.com/s/35XwhOW03njePN1SB3CxMQ