本题是典型的DFS+剪枝

我对DFS有了更深的认识:整个过程就是一片森林(根节点不唯一)的生长,到了界限就得到结果并返回或者得不到结果也返回,DFS的参数存放的是所有需要积累的变量。

提示:

1. 最外层的while或者for可以看成是一个平行的循环过程——树的不同根。

2. 主函数不再循环调用DFS。

3. 剪枝可以放在DFS函数内部的首段,也可以作为进入DFS的条件。

非AC代码,一个测试点超时原因待查明。

#include<cstdio>
#include<iostream>
#include<set>
#include<vector>
#include<map>
#include<algorithm>
#include<cmath>
#include<queue>using namespace std;const int maxn = 210;int v[maxn];int N,K,P;int maxFacSum = -1;int tempK,tempFacSum,tempN;vector<int> ansV;
vector<int> tempV;void DFS(int i,int tempK,int tempN,int tempFacSum){if(tempK==K){if(tempN==N&&tempFacSum>maxFacSum){ansV = tempV;maxFacSum = tempFacSum;}return;}for(int j=i;j>0;j--){if(v[j]<=N-tempFacSum){tempV[tempK] = j; DFS(j,tempK+1,tempN+v[j],tempFacSum+j); }}
} int main(){cin>>N>>K>>P;int i;for(i=0;i<maxn;i++){if(pow(i,P)<=N){v[i] = pow(i,P);}else break;}tempV.resize(K);DFS(i-1,0,0,0); if(maxFacSum == -1)printf("Impossible\n");else{printf("%d = ",N);for(int i=0;i<K;i++){printf("%d^%d%s",ansV[i],P,i==K-1?"\n":" + ");}}return 0;
}

1103 Integer Factorization 需再做相关推荐

  1. PAT甲级1103 Integer Factorization (30 分):[C++题解]背包问题,DP解法

    文章目录 题目分析 题目链接 题目分析 分析 把N(样例中N=169)看成背包的体积:把k(样例中k=5)看成背包能承的重量.把这道题转化为二维完全背包问题.由于数据范围给出的次幂P∈[2,7],那么 ...

  2. 1103. Integer Factorization (30)

    时间限制 1200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The K-P factorization of a posi ...

  3. 1081 Rational Sum 有理数类型题处理 需再做

    一.有理数结构体的几个约束 struct fraction{LL up,down;fraction(LL _up,LL _down):up(_up),down(_down){} }; (1)如果这个有 ...

  4. 1098 Insertion or Heap Sort 需再做

    1. 应该还做过一道类似的题目,也是要求判断属于哪种排序的中间过程,并要求写出下一轮排序结果,这次的进步是上来就知道用向量存数据,这样方便直接比较,而且下标0不能存元素,因为堆排序的堆是一个完全二叉树 ...

  5. PAT甲级 -- 1103 Integer Factorization (30 分)

    The K−P factorization of a positive integer N is to write N as the sum of the P-th power of K positi ...

  6. 1102 Invert a Binary Tree 需再做

    1. 题目的输入是,先给出结点总数N,然后N行给出的是值为x(0<=x<=N-1)的结点的左右结点的值,若不存在左/右结点,则值为 - . 2. 这一题我用动态链表没有做出来,根据参考书提 ...

  7. 1103 Integer Factorization (30 分)【难度: 中 / 爆搜】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805364711604224 爆搜的做法,动态规划也可以做,有时间也一个动 ...

  8. 1103 Integer Factorization (30分)

    第一个深度优先搜索的题目. 很显然这个就是分情况讨论,每次选和不选某值,最终将满足结果的序列筛选出来,我自己写的一个dfs遍历,我比较喜欢对每一个元素进行遍历,用循环控制,这样的好处是避免递归层数太多 ...

  9. 1136 A Delayed Palindrome 需再做

    注意点: 1. 大整数即高精度整数,数据结构bign要会定义 2. 记得写构造函数或者通过别的方式初始化bign 3. len属性记得手动更新 4. int d[maxn]数组是顺位存储,意味着字符串 ...

最新文章

  1. 移动Web开发图片自适应两种常见情况解决方案
  2. Struts2 整合jQuery实现Ajax功能(2)
  3. html页面判断是否登录,egg(103)--egg之定义公共的中间件判断用户是否登录以及去结算页面制作...
  4. React Native Styling:样式化的组件,Flexbox布局等
  5. Git与GitHub学习笔记(六)使用 Github Pages 管理项目文档
  6. 【英语学习】【Daily English】U05 Places L01 How can I get to the city museum?
  7. fiddler弱网测试_用fiddler实现弱网测试
  8. 31岁了学python还是arm_学嵌入式的,学完了51单片机,下一步呢,是学stm32还是学arm呢.有些迷茫还有Linux等。怎么一步步学好...
  9. 断点下载 (记录上传、或下载的量
  10. Learn For Flutter
  11. 使用 Shiro 配合微信小程序或者app登录,做验权
  12. STM32串口屏学习
  13. 【Transformer论文解读】TRAR: Routing the Attention Spans in Transformer for Visual Question Answering
  14. shiro最简洁的权限管理(菜单)控制
  15. ElementUI项目使用pdf.js预览pdf文件
  16. 腾讯广点通接入总结及源码
  17. 土地利用现状分类统计表生成
  18. K均值聚类以及matlab实现
  19. 2021年中国非照片个性化礼品市场趋势报告、技术动态创新及2027年市场预测
  20. 苹果邮箱(@icloud.com):双重验证+专用密码登录

热门文章

  1. 小程序打开文档标题乱码处理
  2. 你真的会用 CocoaPods 吗?
  3. Finalize/Dispose/Destructor
  4. 我了解到的新知识之——电热水器用电安全
  5. Centos7.x系统配置上的变化【转】
  6. cmd命令 安装本地服务器
  7. 网络框架 - 收藏集 - 掘金
  8. HDU 4869 Turn the pokers(思维+组合公式+高速幂)
  9. 精品德国软件 UltraShredder 文件粉碎机
  10. 毕业后五年之内将决定你的一生