一上午都在做有关搜索的题目,,,

看到这题之后就直接开始爆搜

结果只有70分,

其余的点硬生生的就是那么WA了。

我的天哪~

70分代码:

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,sum;
int ans;
bool dis[];
int f[][];
void shuchu() {
for(int i=; i<=n; i++)
cout<<f[][i]<<" ";
}
void check() {
for(int i=; i<=n; i++)
for(int j=; j<=n-i+; j++)
f[i][j]=f[i-][j]+f[i-][j+];
/* for(int i=1;i<=n;i++){
for(int j=1;j<=n-i+1;j++)
cout<<f[i][j]<<" ";
cout<<'\n';
}*/
// cout<<f[n][1]<<" ";
if(f[n][]==sum) {
shuchu();
ans++;
}
}
void pai(int k) {
if(k>n&&!ans) {
check();
return;
}
for(int i=; i<=n; i++) {
if(!dis[i]) {
dis[i]=true;
f[][k]=i;
pai(k+);
dis[i]=false;
}
}
}
inline int read() {
int s=,w=;
char ch=getchar();
while(ch<''||ch>'') {
if(ch=='-')w=-;
ch=getchar();
}
while(ch>=''&&ch<='')
s=(s<<)+(s<<)+(ch^),ch=getchar();
return s*w;
}
int main() {
n=read(),sum=read();
pai();
return ;
}

之后就开始手动模拟 check() 的过程

猛然发现

这貌似是个杨辉三角,哟哟哟。,,

满分代码:

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,sum;
int ha[],flag,yh[][];
bool v[];
void print(){
for(int i=;i<=n;i++)
printf("%d ",ha[i]);
}
//那个函数被我删了
void dfs(int step,int ans){
if(ans>sum||flag)return;
if(step==n+&&ans==sum){
print();
flag=;//标记
return;
}
for(int i=;i<=n;i++)
if(!v[i]){
ha[step]=i;
v[i]=true;
dfs(step+,ans+i*yh[n][step]);//看顶楼的解释
v[i]=false;//回溯
}
} int main(){
scanf("%d%d",&n,&sum);
yh[][]=;
for(int i=;i<=n;i++)//构造杨辉三角
for(int j=;j<=i;j++)
yh[i][j]=yh[i-][j-]+yh[i-][j];
dfs(,);
return ;
}

luoguP1118 [USACO06FEB]数字三角形`Backward Digit Su`… 题解的更多相关文章

  1. P1118 [USACO06FEB]数字三角形`Backward Digit Su`… 回溯法

    有这么一个游戏: 写出一个11至NN的排列a_iai​,然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少11,直到只剩下一个数字位置.下面是一 ...

  2. P1118 [USACO06FEB]数字三角形`Backward Digit Su`…

    题目描述 FJ and his cows enjoy playing a mental game. They write down the numbers from 11 to N(1 \le N \ ...

  3. P1118 [USACO06FEB]数字三角形Backward Digit Su…

    题目描述 FJ and his cows enjoy playing a mental game. They write down the numbers from 1 to N (1 <= N ...

  4. 洛谷—— P1118 [USACO06FEB]数字三角形Backward Digit Su…

    https://www.luogu.org/problem/show?pid=1118#sub 题目描述 FJ and his cows enjoy playing a mental game. Th ...

  5. P1118 [USACO06FEB]数字三角形`Backward Digit Su`… (dfs)

    https://www.luogu.org/problemnew/show/P1118 看的出来是个dfs 本来打算直接从下到上一顿搜索 但是不会 看了题解才知道系数是个杨辉三角....... 这样就 ...

  6. 洛谷P1118 [USACO06FEB]数字三角形`Backward Digit Su`…

    #include<iostream> using namespace std ; ; int y[N][N]; int n; int a[N]; bool st[N]; int sum; ...

  7. Luogu P1118 [USACO06FEB]数字三角形 Backward Digit Sums | 搜索、数学

    题目链接 思路:设一开始的n个数为a1.a2.a3...an,一步一步合并就可以用a1..an表示出最后剩下来的数,不难发现其中a1..an的系数恰好就是第n层杨辉三角中的数.所以我们可以先处理出第n ...

  8. [USACO06FEB]数字三角形

    题目描述 FJ and his cows enjoy playing a mental game. They write down the numbers from 1 to N (1 <= N ...

  9. P1118 [USACO06FEB]Backward Digit Sums G/S

    P1118 [USACO06FEB]Backward Digit Sums G/S 题解:  (1)暴力法.对1-N这N个数做从小到大的全排列,对每个全排列进行三角形的计算,判断是否等于N.  对每个 ...

随机推荐

  1. 系统压测结果对比:tomcat/thinkphp/swoole/php-fpm/apache

    [测试所用服务器8核,16G内存]压测接口:很简单,从一张表里根据主键随机查询出一条数据[数据库服务器和WEB服务器分开的].表数据量大概:910000+条. 这个测试结果很有趣:tp5.0和3.2性 ...

  2. vim:spell语法

    先说结论,在vim配置文件加入: setlocal spell spelllang=en_us,cjk 1.spell指开启检查模式. 2.spelllang用于指定检查的种类. 3.cjk,指中国, ...

  3. 总结:WPF中ResourceDictionary资源文件的查找和遍历方法

    原文:总结:WPF中ResourceDictionary资源文件的查找和遍历方法 一.查找包含制定关键字的资源 ResourceDictionary GetThemeDictionary()     ...

  4. CentOS 7.0 更改SSH 远程连接 端口号

    许多学习过redhat 7的同学们,在使用centos的时候总会遇到一些问题,因为centos在安装时会默认开启一些服务,今天我们就来更改下centos 7.0的SSH端口. 操作步骤: 远程登录到c ...

  5. 修改host文件加速访问github

    修改本地电脑系统 hosts 文件C:\Windows\System32\drivers\etc,直接在最后加入以下代码 192.30.253.112 github.com 192.30.253.11 ...

  6. 浏览器解析js

    网页加载js步骤 1.浏览器一边下载html网页,一边开始解析(不等下载完就解析)2.遇到<script>标签,暂停解析,网页渲染的控制权交给javascript引擎3.如果<scr ...

  7. Nginx配置单项SSL以及双向SSL

    Https安全协议的由来? 在实现 HTTPS协议前,我们需要了解 SSL 协议,但其实我们现在使用的更多的是 TLS 加密通讯协议. 那么TLS是怎么保证明文消息被加密的呢?在OSI七层模型中,应用 ...

  8. pandas-17 关于nan的处理

    pandas-17 关于nan的处理 在pandas中有个另类的存在就是nan,解释是:not a number,不是一个数字,但是它的类型确是一个float类型.numpy中也存在关于nan的方法, ...

  9. Springboot生成二维码并下载图片png支持打包成zip

    pom.xml <!--二维码--> <dependency> <groupId>com.google.zxing</groupId> <arti ...

  10. grub破解和bios加密

    grub破解通过单用户模式,可以实现修改密码 grub加密以后,只能通过bios解除grub密码,方法如下 进入bios 修改启动方式,从CD启动 加载系统镜像,原系统默认挂载到/mnt/sysima ...