#include <bits/stdc++.h>
using namespace std;
int c[13][13];//杨辉三角
int b[13];//用于排除
int a[13];//输出解答
int n, p;
void dfs(int dep, int s)
{
if (s > p)
return;
if (dep > n)
{
if (s == p)
{
for (int i = 1; i <= n; i++)
cout << a[i]<<" ";
exit(0);
}
return;
}
for (int i = 1; i <= n; i++)
{
if (b[i] == false)
{
b[i] = true;
a[dep] = i;
dfs(dep + 1, s +i * c[n][dep]);
b[i] = false;
}
}
}
int main()
{
cin >> n >> p;//输入
c[1][1] = 1;
for (int i = 2; i <= n; i++)
for (int j = 1; j <= i; j++)
c[i][j] = c[i - 1][j] + c[i - 1][j - 1];//生成杨辉三角
dfs(1, 0);
}

深度搜索的使用,关键就是想不到这个杨辉三角的表示,说实话做到这里就不是Mali的问题了。

int main()
{
int num = 1,a[6]= {1,2,3,4,5};
while(next_permutation(a,a+5))
{
for(int i=0; i<5; i++)
cout<<a[i]<<" ";
if(num==5)
break;
num++;
cout<<endl;
}
return 0;
}

next_permutation函数:若存在其他的排列,则返回真。直到整个序列降序排序为止。

洛谷P1118数字三角形,的更多相关文章

  1. 洛谷P1118 数字三角形游戏

    洛谷1118 数字三角形游戏 题目描述 有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直 ...

  2. 洛谷P1118 数字三角形【dfs】【STL】

    题目链接:https://www.luogu.org/problemnew/show/P1118 题意: 1~n的一个排列,相邻的两项加起来得到下一行. 现在给定最后一行的数字,问最初的1~n的排列是 ...

  3. 洛谷 - P1118 - 数字三角形 - next_permutation

    https://www.luogu.org/problemnew/show/P1118 next_permutation的第二个参数是最后一个元素的下一个元素,sort也是一样!有毒!这么低级的错误. ...

  4. 洛谷 P1118 数字三角形游戏 Label:dfs

    题目描述 有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直到只剩下一个数字位置.下面是一 ...

  5. 洛谷P1118数字三角形题解

    题目 这个题我们乍一看会有些熟悉.觉得是可以用DP来做的那个题.但是打眼一看,就会发现不对了.因为那个题是顺推而这个题则是逆推. 这样的话可怎么办呢. 我们可以在草稿纸上推一下,我们随便写个数n. 再 ...

  6. 洛谷P1216 数字三角形【dp】

    题目:https://www.luogu.org/problemnew/show/P1216 题意: 给定一个三角形.从顶走到底,问路径上的数字之和最大是多少. 走的时候可以往左下(实际上纵坐标不变) ...

  7. 洛谷P1216数字三角形题解

    题目 这道题是一个典型的DP,可以用倒推,顺推的方法,来解这道题.当然用不同的方法他的循环次序是不一样的,所以我们一定要深刻地理解题目的大意,再采用状态转移方程与边界每次求出最优解,并记录循环一遍后就 ...

  8. 洛谷P1553 数字翻转(升级版)

    题目链接 https://www.luogu.org/problemnew/show/P1553 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的 ...

  9. 【洛谷P1118】数字三角形

    数字三角形 题目链接 4 16 3 1 2 4 3 1 2 4 (3+1) (1+2) (2+4)(3+1+1+2) (1+2+2+4) (3+1+1+1+2+2+2+4)16=1*3+3*1+3*2 ...

  10. 洛谷 P5660 数字游戏 & [NOIP2019普及组]

    传送门 洛谷改域名了QAQ 解题思路 没什么好说的,一道红题,本不想发这篇博客 ,但还是尊重一下CCF吧QAQ,怎么说也是第一年CSP呢! 用getchar一个个读入.判断.累加,最后输出即可. 不过 ...

随机推荐

  1. 第15周作业--JDBC连接数据库

    编写一个应用程序,输入用户名和密码,访问test数据库中t_login表(字段包括id.username.password),验证登录是否成功.当登录成功后,将t_user表(id.name.sex. ...

  2. 1.java 开始

    WelloWorld 随便新建一个文件夹,存放代码 新建一个java文件 编写代码 编译javac java文件,生成一个class文件 运行class文件,java class 可能遇到的情况 每个 ...

  3. HTML图片上传实时预览js

    <style>*{margin:0; padding:0;}form{background:#F1F1F1;}.bbg{background:url(../images/add_ico.j ...

  4. java抽象类继承抽象类和抽象方法 java抽象类继承抽象类和抽象方法

    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量.成员方法和构造方法的访问方式和普通类一样. 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用.也是因为这个原因,通常在设计阶段决 ...

  5. Oracle 临时表空间暴满的原因与解决方法

    Oracle临时表空间主要用来做查询和存放一些缓冲区数据.临时表空间消耗的主要原因是需要对查询的中间结果进行排序. 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,te ...

  6. vue 和react 不同之我见

    1数据是不是可变的 2通过js操作一切还是各自的处理方式 react的思路是all in js,通过js来生成html,所以设计了jsx,还有通过js来操作css,社区的styled-componen ...

  7. 查看linux进程启动运行时间

    ps -eo pid,tty,user,lstart,etime,cmd|grep nginx 参数说明: pid:进程ID tty:终端 user:用户 lstart:开始时间 etime:运行时间 ...

  8. PgBouncer连接池工具

    PgBouncer是为PostgreSQL提供的轻量级连接池工具,作用如下:1,能够缓存和PostgreSQL的连接,当有连接请求进来的时候,直接分配空闲进程,而不需要PostgreSQL fork出 ...

  9. 实验:在Arduino上使用printf格式化输出到串口

    那么在pcDuino上如何用printf函数将数据从串口送出来呢?这就需要修改Arduino上的串口的库文件了.修改 步骤如下:  1.在 pcduino上arduino的库文件路径是:/usr /a ...

  10. log调试法

    function writeToTxt($data,$filename="debug"){     if(is_array($data)){         file_put_co ...