luoguP1118 [USACO06FEB]数字三角形`Backward Digit Su`… 题解
一上午都在做有关搜索的题目,,,
看到这题之后就直接开始爆搜
结果只有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`… 题解的更多相关文章
- P1118 [USACO06FEB]数字三角形`Backward Digit Su`… 回溯法
有这么一个游戏: 写出一个11至NN的排列a_iai,然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少11,直到只剩下一个数字位置.下面是一 ...
- 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 \ ...
- 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 ...
- 洛谷—— P1118 [USACO06FEB]数字三角形Backward Digit Su…
https://www.luogu.org/problem/show?pid=1118#sub 题目描述 FJ and his cows enjoy playing a mental game. Th ...
- P1118 [USACO06FEB]数字三角形`Backward Digit Su`… (dfs)
https://www.luogu.org/problemnew/show/P1118 看的出来是个dfs 本来打算直接从下到上一顿搜索 但是不会 看了题解才知道系数是个杨辉三角....... 这样就 ...
- 洛谷P1118 [USACO06FEB]数字三角形`Backward Digit Su`…
#include<iostream> using namespace std ; ; int y[N][N]; int n; int a[N]; bool st[N]; int sum; ...
- Luogu P1118 [USACO06FEB]数字三角形 Backward Digit Sums | 搜索、数学
题目链接 思路:设一开始的n个数为a1.a2.a3...an,一步一步合并就可以用a1..an表示出最后剩下来的数,不难发现其中a1..an的系数恰好就是第n层杨辉三角中的数.所以我们可以先处理出第n ...
- [USACO06FEB]数字三角形
题目描述 FJ and his cows enjoy playing a mental game. They write down the numbers from 1 to N (1 <= N ...
- P1118 [USACO06FEB]Backward Digit Sums G/S
P1118 [USACO06FEB]Backward Digit Sums G/S 题解: (1)暴力法.对1-N这N个数做从小到大的全排列,对每个全排列进行三角形的计算,判断是否等于N. 对每个 ...
随机推荐
- router单页面多个标签tags的用法<router-view></router-view>
<keep-alive><router-view :key="path" /></keep-alive>
- C#:Json字符串、JsonArray字符串处理
今天在做Asp网站开发的时候接受到了一种下面这种样子的字符串: "[ { "mid": "123456", "nid": &quo ...
- Redis 获取和设置密码
1.config get reuqirepass //获取当前密码 2.config set requirepass "password"//设置当前密码,双引号里面为密码
- RabbitMQ学习之Topics(5)
上一节,我们讲了direct exchange,这节我们讲下topic exchange Topic exchange 发送到topic exchange的messages不可以有一个随意的routi ...
- winform+CefSharp 实现和js交互
1:窗体加载的时候添加 webBrowser.RegisterJsObject("getuserName", new _Event()); 2:注册C#方法为js方法 /// // ...
- windows下vmware和Hyper-v共存方法
问题描述:环境:windows server 2012 r2系统下安装Hyper-v后,再安装Vmware 在Vmware中创建虚拟机,安装虚拟机系统的时候,vmware提示:VMware Works ...
- Map作为缓存使用
public class MapCache { /** * 默认存储1024个缓存 */ private static final int DEFAULT_CACHES = 1024; private ...
- Python进阶----索引原理,mysql常见的索引,索引的使用,索引的优化,不能命中索引的情况,explain执行计划,慢查询和慢日志, 多表联查优化
Python进阶----索引原理,mysql常见的索引,索引的使用,索引的优化,不能命中索引的情况,explain执行计划,慢查询和慢日志, 多表联查优化 一丶索引原理 什么是索引: 索引 ...
- Matlab中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.想象一个乱糟糟的开发小组的工 ...
- 面试题:栈的push和pop序列是否一致
参数是两个数组,arr1,arr2 stack stack = new Stack() for(int i=0;j=0;i<arr1.length;i++){ stack.push(arr[i] ...