1103 Integer Factorization 需再做
本题是典型的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 需再做相关推荐
- PAT甲级1103 Integer Factorization (30 分):[C++题解]背包问题,DP解法
文章目录 题目分析 题目链接 题目分析 分析 把N(样例中N=169)看成背包的体积:把k(样例中k=5)看成背包能承的重量.把这道题转化为二维完全背包问题.由于数据范围给出的次幂P∈[2,7],那么 ...
- 1103. Integer Factorization (30)
时间限制 1200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The K-P factorization of a posi ...
- 1081 Rational Sum 有理数类型题处理 需再做
一.有理数结构体的几个约束 struct fraction{LL up,down;fraction(LL _up,LL _down):up(_up),down(_down){} }; (1)如果这个有 ...
- 1098 Insertion or Heap Sort 需再做
1. 应该还做过一道类似的题目,也是要求判断属于哪种排序的中间过程,并要求写出下一轮排序结果,这次的进步是上来就知道用向量存数据,这样方便直接比较,而且下标0不能存元素,因为堆排序的堆是一个完全二叉树 ...
- 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 ...
- 1102 Invert a Binary Tree 需再做
1. 题目的输入是,先给出结点总数N,然后N行给出的是值为x(0<=x<=N-1)的结点的左右结点的值,若不存在左/右结点,则值为 - . 2. 这一题我用动态链表没有做出来,根据参考书提 ...
- 1103 Integer Factorization (30 分)【难度: 中 / 爆搜】
https://pintia.cn/problem-sets/994805342720868352/problems/994805364711604224 爆搜的做法,动态规划也可以做,有时间也一个动 ...
- 1103 Integer Factorization (30分)
第一个深度优先搜索的题目. 很显然这个就是分情况讨论,每次选和不选某值,最终将满足结果的序列筛选出来,我自己写的一个dfs遍历,我比较喜欢对每一个元素进行遍历,用循环控制,这样的好处是避免递归层数太多 ...
- 1136 A Delayed Palindrome 需再做
注意点: 1. 大整数即高精度整数,数据结构bign要会定义 2. 记得写构造函数或者通过别的方式初始化bign 3. len属性记得手动更新 4. int d[maxn]数组是顺位存储,意味着字符串 ...
最新文章
- 移动Web开发图片自适应两种常见情况解决方案
- Struts2 整合jQuery实现Ajax功能(2)
- html页面判断是否登录,egg(103)--egg之定义公共的中间件判断用户是否登录以及去结算页面制作...
- React Native Styling:样式化的组件,Flexbox布局等
- Git与GitHub学习笔记(六)使用 Github Pages 管理项目文档
- 【英语学习】【Daily English】U05 Places L01 How can I get to the city museum?
- fiddler弱网测试_用fiddler实现弱网测试
- 31岁了学python还是arm_学嵌入式的,学完了51单片机,下一步呢,是学stm32还是学arm呢.有些迷茫还有Linux等。怎么一步步学好...
- 断点下载 (记录上传、或下载的量
- Learn For Flutter
- 使用 Shiro 配合微信小程序或者app登录,做验权
- STM32串口屏学习
- 【Transformer论文解读】TRAR: Routing the Attention Spans in Transformer for Visual Question Answering
- shiro最简洁的权限管理(菜单)控制
- ElementUI项目使用pdf.js预览pdf文件
- 腾讯广点通接入总结及源码
- 土地利用现状分类统计表生成
- K均值聚类以及matlab实现
- 2021年中国非照片个性化礼品市场趋势报告、技术动态创新及2027年市场预测
- 苹果邮箱(@icloud.com):双重验证+专用密码登录