#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
int num=1;
int sum=0;
int A=1,B=1,C=1; // num=a+b/c ,a,b,c所对应的长度
int abc[11];//储存a,b,c的值
int is[10]={0};
int a=0,b=0,c=0;

int power(int x,int y)
{
int pow =1;
for(int i=0;i<y;i++)
pow=pow*x;
return pow;
}
int cal(char n)
{
int sum=0;
if(n=='C')
for(int i=1;i<=C;i++)
sum+=abc[i]*power(10,C-i);

if(n=='B')
for(int i=C+1;i<=C+B;i++)
sum+=abc[i]*power(10,C+B-i);

if(n=='A')
for(int i=C+B+1;i<=9;i++)
sum+=abc[i]*power(10,9-i);

return sum;
}
void f(int n) //从c-b-a根据位数取值放到abc数组保存,判断
{
if(n>C+B)
{
c=cal('C');
b=cal('B');
//剪枝2 b必须大于c
if(b<c) return ;
//剪枝3 b/c必须为整数
if(b%c!=0) return ;
int s=b/c;
//剪枝4,b/c必须小于num
if(s>num) return ;
}
if(n==10) //取值完毕
{
a=cal('A');
if(a+b/c==num )
{
/* printf("%d = ",num);
for(int i=1;i<=A;i++)
printf("%d",abc[B+C+i]);
printf("+");
for(int i=1;i<=B;i++)
printf("%d",abc[C+i]);
printf("/");
for(int i=1;i<=C;i++)
printf("%d",abc[i]);
printf("\n");*/
sum++;
}
return ;
}
for(int i=1;i<=9;i++)
{
if(is[i]==0)
{
is[i]=1;
abc[n]=i;//按位储存c的值
f(n+1);
abc[n]=0;
is[i]=0;
}
}
}
int main()
{
cin>>num;
/*剪枝一*/
for(C=1;C<=4;C++) //分母长度最多为4位
for(B=C;B<=7,B+C<=8;B++) //分子位数不低于父母位数且要保证A的长度
{
A=9-B-C;
f(1);
}
cout<<sum<<endl;
printf("Time used = %.2f",(double)clock()/CLOCKS_PER_SEC);// 注意题目时间
return 0;
}

带分数dfs+剪枝优化的更多相关文章

  1. hdu 4109 dfs+剪枝优化

    求最久时间即在无环有向图里求最远路径 dfs+剪枝优化 从0节点(自己添加的)出发,0到1~n个节点之间的距离为1.mt[i]表示从0点到第i个节点眼下所得的最长路径 #include<iost ...

  2. 搜索(剪枝优化):HDU 5113 Black And White

    Description In mathematics, the four color theorem, or the four color map theorem, states that, give ...

  3. DFS剪枝处理HDU1010

    http://acm.hdu.edu.cn/showproblem.php?pid=1010 题意很好理解,不是最短路,而是dfs,虽然地图不算大,稍微注意一点的dfs也能险过,但是700+ms和78 ...

  4. hdu 5887 Herbs Gathering (dfs+剪枝 or 超大01背包)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5887 题解:这题一看像是背包但是显然背包容量太大了所以可以考虑用dfs+剪枝,贪心得到的不 ...

  5. 生日蛋糕 (poj1190) (dfs剪枝)

    [题目描述] 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为 ...

  6. [Codeforces 163D]Large Refrigerator (DFS+剪枝)

    [Codeforces 163D]Large Refrigerator (DFS+剪枝) 题面 已知一个长方体的体积为V,三边长a,b,c均为正整数,求长方体的最小表面积S V以质因数分解的形式给出 ...

  7. [vijos1048]送给圣诞夜的贺卡<DFS剪枝>

    题目链接:https://www.vijos.org/p/1048 很多人一看就想出了思路,不就是一个裸的dfs蛮...但是..在n<=50的情况下,朴素会直接tle..... 然后我就开始剪枝 ...

  8. Sticks(UVA - 307)【DFS+剪枝】

    Sticks(UVA - 307) 题目链接 算法 DFS+剪枝 1.这道题题意就是说原本有一些等长的木棍,后来把它们切割,切割成一个个最长为50单位长度的小木棍,现在想让你把它们组合成一个个等长的大 ...

  9. 图解Leetcode组合总和系列——回溯(剪枝优化)+动态规划

    Leetcode组合总和系列--回溯(剪枝优化)+动态规划 组合总和 I 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 ...

随机推荐

  1. gitlab 使用现有 nginx 服务器

    gitlab 安装自带 nginx,如果想利用原有 nginx,可按如下操作: 8.0 版本 socket 文件位置有变动,感谢评论区的同学. nginx 增加虚拟主机配置 # gitlab sock ...

  2. Lua 正确的尾调用(proper tail call)

    Lua支持“尾调用消除(tail-call elimination)”.尾调用(tail call):当一个函数调用是另一个函数的最后一个动作时,该调用才算是一条“尾调用”.例如,下面的代码就是一条“ ...

  3. Windows进程间共享内存通信实例

    Windows进程间共享内存通信实例 抄抄补补整出来 采用内存映射文件实现WIN32进程间的通讯:Windows中的内存映射文件的机制为我们高效地操作文件提供了一种途径,它允许我们在WIN32进程中保 ...

  4. package.json字段全解(转)

    Name 必须字段. 小提示: 不要在name中包含js, node字样: 这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头: 这个名字可能在require()方法中被 ...

  5. LeetCode 29 Divide Two Integers (不使用乘法,除法,求模计算两个数的除法)

    题目链接: https://leetcode.com/problems/divide-two-integers/?tab=Description   Problem :不使用乘法,除法,求模计算两个数 ...

  6. 利用Jenkins未授权获取服务器权限--Docker还来干扰--一次渗透的经历

    Jenkins获取权限的过程 Jenkins存在未授权访问漏洞 Jenkins存在未授权访问漏洞,且项目具有读取权限,通过项目的日志获取到一个账号密码,尝试登录成功,打开控制台成功. 备注:控制台一般 ...

  7. 问题记录 为ubuntu16.04添加windows字体(解决JIRA图表乱码的问题)

    最近遇到了JIRA在新的ubuntu机器上图表的中文无法正确显示的问题,解决的方法是,为ubuntu安装中文字体,我们选择把windows上的字体复制到ubuntu上来安装的方法,步骤如下: 从win ...

  8. 【OOP】C++ const成员函数

    预备知识 1.代码转换分析技巧 在早期某些编译器会将C++代码翻译为C代码,然后使用C编译器生成可执行文件.其中翻译的一个转化就是:将this指针显式添加到成员函数的第一个参数位置上,并在成员函数调用 ...

  9. 【CF720D】Slalom 扫描线+线段树

    [CF720D]Slalom 题意:一个n*m的网格,其中有k个矩形障碍,保证这些障碍不重叠.问你从(1,1)走到(n,m),每步只能往右或往上走,不经过任何障碍的方案数.两种方案被视为不同,当且仅当 ...

  10. Unity3D笔记 切水果三 切水果

    一.创建一个Apple00,拖拽Prfabs下的Sprite命名为Apple00,添加碰撞器Box Collider,编写代码Knife Rey1.js 二.做被切的苹果 步骤和一是一样的,但是被切的 ...