(水题)洛谷 - P1149 - 火柴棒等式
https://www.luogu.org/problemnew/show/P1149
一开始还分类重复了。在非0的dfs中居然赋值了0,脑残得一笔。
其实就按 $lead0$ 分类就好了, $lead0$ 表示当前位有没有被赋值过,只有没被赋值过的赋值前导0才会立刻进入下一个数字。
#include<bits/stdc++.h>
using namespace std;
#define ll long long int cost[]={,,,,,,,,,}; int cnt=; set<pair<pair<ll,ll>,ll> >s; void dfs(int i,int n,ll a,ll b,ll c,int lead0){
if(n<)
return;
//cout<<"i="<<i<<" "<<a<<" + "<<b<<" = "<<c<<" restn= "<<n <<endl;
//lead0=1,表示这个数可以取前导0,也就是这个数还没有被赋值
if(i==){
if(lead0){
if(n-cost[]>=)
dfs(,n-cost[],,b,c,);
//给a赋值0,那么a就不能搜索了
for(int i=;i<=;i++){
//这个bug服气了,非零居然从0开始
if(n-cost[i]>=){
dfs(,n-cost[i],i,b,c,);
//给a赋值非0
}
}
}
else{
//a已经被赋值过非0了 //停止搜索a,考虑b,b没被赋值
dfs(,n,a,b,c,); for(int i=;i<=;i++){
if(n-cost[i]>=){
dfs(,n-cost[i],a*+i,b,c,);
//继续给a加后缀
}
}
}
}
else if(i==){
if(lead0){
//进不来这里,改了之后就可以进来了
dfs(,n-cost[],a,,c,);
//给b赋值0,那么b就不能搜索了
for(int i=;i<=;i++){
if(n-cost[i]>=){
dfs(,n-cost[i],a,i,c,);
//给b赋值非0
}
}
}
else{
//b已经被赋值过非0了 //停止搜索b,考虑c
dfs(,n,a,b,c,); for(int i=;i<=;i++){
if(n-cost[i]>=){
dfs(,n-cost[i],a,b*+i,c,);
//继续给b加后缀
}
}
}
}
else if(i==){
if(lead0){
//进不来这里?
dfs(,n-cost[],a,b,,);
//给c赋值0,那么c就不能搜索了
for(int i=;i<=;i++){
if(n-cost[i]>=){
dfs(,n-cost[i],a,b,i,);
//给c赋值非0
}
}
}
else{
//停止搜索c
dfs(,n,a,b,c,);
//c已经被赋值过非0了
for(int i=;i<=;i++){
if(n-cost[i]>=){
dfs(,n-cost[i],a,b,c*+i,);
//继续给c加后缀
}
}
}
}
else{
if(n==&&(a+b==c)){
s.insert({{a,b},c});
cnt++;
}
return;
}
} int main(){
int n;
scanf("%d",&n);
n-=;
dfs(,n,-,-,-,);
printf("%d\n",s.size());
}
(水题)洛谷 - P1149 - 火柴棒等式的更多相关文章
- 用Python写算法题--洛谷P1149 火柴棒等式
题目 题目来源 P1149 火柴棒等式,https://www.luogu.org/problem/P1149 题目描述 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式? ...
- [NOIP2008] 提高组 洛谷P1149 火柴棒等式
题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注意: 加号与等号各自 ...
- 洛谷 P1149 火柴棒等式
嗯.... 这道题好讨厌啊!!!! 一开始莫名RE,然后发现数组小了,然后发现后面几个点总是WA,原来推的少了.... 并且这道题的思路真的好水啊!! 先看一下题: 题目描述 给你n根 ...
- 洛谷P1149 火柴棒等式
题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注意: 1.加号与等号 ...
- 洛谷P1149.火柴棒等式(暴力搜索)
题目描述 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注 ...
- Java实现 洛谷 P1149 火柴棒等式
import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.S ...
- luogu P1149 火柴棒等式
题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注意: 加号与等号各自 ...
- (函数)P1149 火柴棒等式
题解: #include<stdio.h>int a[10]={6,2,5,5,4,5,6,3,7,6};int num(int n){ ...
- [折腾笔记] 洛谷P1149-火柴棒等式 AC记
原题链接: https://www.luogu.org/problem/P1149 题面简述: 给你n根火柴棍,你可以拼出多少个形如"A+B=C""A+B=C" ...
随机推荐
- Tomcat载入两次问题
前提介绍: 1.某个应用Dragon放置路径:/opt/apache-tomcat-7.0.47/webapps/Dragon 2.Tomcat的server.xml部分配置信息例如以下: &l ...
- JAVA程序设计(12.3)---- 监听器0基础应用:五子棋
1.制作五子棋游戏软件 由于老师已经基本做完了.重做的时候快了非常多--可是还是感觉思维非常混乱-- 哪边先哪边后,哪个方法在哪边好之类的问题 太纠结了-- 先是窗体 内部类:鼠标适配器 窗体的构造 ...
- JSP简明教程:汇总
原创JSP教程,简洁明了,不含废话. JSP简明教程(一):JSP简单介绍 JSP简明教程(二):JSP基本的语法 JSP简明教程(三):JSP隐含对象 JSP简明教程(四):EL表达式语言.Java ...
- Python爬取韩寒所有新浪博客
接上一篇,我们依据第一页的链接爬取了第一页的博客,我们不难发现,每一页的链接就仅仅有一处不同(页码序号),我们仅仅要在上一篇的代码外面加一个循环,这样就能够爬取全部博客分页的博文.也就是全部博文了. ...
- LINQ解决依据某个字段去重
想要List结果反复 的数据非常easy.仅仅要.Dinstinct()就好了 可是假设想要依据某个字段去除反复的数据,上面的方法就帮不上忙了.我们须要重写一个方法.直接上样例吧 [Serializa ...
- RC4算法的Python实现详注
刚对RC4算法进行了学习,网上发现https://ju.outofmemory.cn/entry/46753 中作者展示了RC4的python实现,但代码缺乏注释,较为晦涩,因此本文对部分代码进行了注 ...
- snip_opencv环境配置和测试程序
opencv2.4.9环境变量配置的记录. 2014年8月10日 Microsoft Windows XP [版本 5.1.2600](C) 版权所有 1985-2001 Microsoft Corp ...
- Drupal 7模板(主题钩子)的建议
这一块的内容很多其它的讲的是样例.所以这里请直接稳步官方站点查看吧.链接 https://drupal.org/node/1089656
- sqlldr trailing nullcols
由于要导入到tmp_content表的一些列(列:要导入的源文件txt or csv文件)为空,也,按理讲我当时另存为(在windows处理)csv,以,分隔.就是这个列没有内容,也该显示, ,之类的 ...
- 使用std::mutex取代QMutex
为了保证对某个资源的操作是原子性的(对资源读写时,只有当前的操作结束,才允许另外线程对其操作,这里有个理解误区,资源操作原子性不是说,当前某个线程获得了某个资源使用权,然后线程执行时间完毕,要切换线程 ...