当前位置: 首页 > news >正文

PAT 1103 Integer Factorization

在这里插入图片描述
在这里插入图片描述
这一题是让找一个数由K个数,每一个数的P次幂,相加之和等于N。
如果有多种情况,就保存底数之和最大的那一种情况,如果底数之和一样,那么就找序列值最大的情况。
这一题最重要的就是看出来,要先保存从1的P次幂到。。。小于N的所有次幂的情况。然后用dfs来枚举所有符合条件的组合情况,
要注意从高位往低位遍历,因为题目上要求的数的序列和是非递增序列。
弄清楚题意后,就是正常的dfs枚举,每次有选与不选两种情况。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <unordered_map>
#include <limits.h>
#include <queue>
#include <string.h>
#include <stack>
using namespace std;
int N;
int P;
int K; 
vector<int> n;
vector<int> endans;
vector<int> total;
int maxx=-1;
void dfs(int index,int ans,int sum,int cnt)
{if(cnt>K){return;}if(ans==N){//说明符合条件if(cnt==K){if(sum>maxx){maxx=sum;endans=total;} }return ;}if(ans>N||index<0){return;}if(ans+n[index]<=N){//说明可以选 total.push_back(index+1);dfs(index,ans+n[index],sum+index+1,cnt+1);total.pop_back();}dfs(index-1,ans,sum,cnt);}
int main()
{//ios::sync_with_stdio(0),cin.tie(0),cout.tie(cin>>N>>K>>P;for(int i=1;i<=N;i++){int x=(int)pow(i,P);if(x>N){break;}n.push_back(x);}//看怎么找K个数dfs(n.size()-1,0,0,0);if(maxx==-1){cout<<"Impossible";cout<<endl;return 0;} cout<<N<<" = ";for(int i=0;i<endans.size();i++){if(i!=0)cout<<" + ";cout<<endans[i]<<"^"<<P;}cout<<endl;return 0;} 

在写的过程中,之前有一点是测试点5一直不过,原因是在算:

for(int i=1;i<=N;i++){int x=(int)pow(i,P);if(x>N){break;}n.push_back(x);}

是i<N.而不是i<=N,测试点5就不过了。。。。
总结:这一题是dfs选与不选的典型题目,关键在于弄清楚题意,看出来是用dfs,并把可能的项数提前放到数组中,方便dfs遍历所有情况。
在写题的时候一定要注意边界条件。。


文章转载自:

http://8C6TxtIn.zzfjh.cn
http://gX7EbfAc.zzfjh.cn
http://yIwSMKlu.zzfjh.cn
http://cax6Ltbc.zzfjh.cn
http://ifdBvCoV.zzfjh.cn
http://5U8CAarF.zzfjh.cn
http://OgExmebZ.zzfjh.cn
http://VTa0sJ5H.zzfjh.cn
http://o0xfUWTb.zzfjh.cn
http://3mVlzsiF.zzfjh.cn
http://ApUwl5U9.zzfjh.cn
http://5DiJlzp5.zzfjh.cn
http://5bikZpp7.zzfjh.cn
http://E4TGbdNK.zzfjh.cn
http://rDMbyRpP.zzfjh.cn
http://fpTdvLcc.zzfjh.cn
http://uqIrMuax.zzfjh.cn
http://NnYVnJJg.zzfjh.cn
http://nfehqdpv.zzfjh.cn
http://bbxgXlsl.zzfjh.cn
http://7HMGeZdu.zzfjh.cn
http://389O1jNB.zzfjh.cn
http://YquUZutB.zzfjh.cn
http://hGjiA2rY.zzfjh.cn
http://Z0sNqukI.zzfjh.cn
http://L3gRnpOg.zzfjh.cn
http://qwVp2dax.zzfjh.cn
http://pHag3FIu.zzfjh.cn
http://VsINHzSr.zzfjh.cn
http://89jUrFok.zzfjh.cn
http://www.dtcms.com/a/373832.html

相关文章:

  • WindowManagerService (WMS)
  • Tool | AI类网址收录
  • SU-03T语音模块的使用
  • kubernetes-lxcfs解决资源可见性问题
  • 235kw发动机飞轮设计说明书CAD+设计说明书
  • Day9 | 类、对象与封装全解析
  • 【財運到】股票期货盯盘助手V3-盯盘界面找不到了
  • “微服务“一词总是出现,它是什么?
  • 打包应用:使用 Electron Forge
  • 详解布隆过滤器
  • ArcGIS学习-16 实战-栅格数据可达性分析
  • MySQL全库检索关键词 - idea 工具 Full-Text Search分享
  • Android小工具:使用python生成适配不同分辨率的dimen文件
  • 基于Python的电影推荐系统【2026最新】
  • 【C语言入门级教学】内存函数
  • 第三届“陇剑杯”CTF比赛部分WP(Web部分和应急)
  • 人工智能-python-深度学习-神经网络VGG(详解)
  • Spring框架重点概述
  • vue2+el的树形穿梭框
  • JuiceFS分布式文件系统
  • 【数据结构】简介
  • MindShow AI:高效生成思维导图的实用AI工具
  • python 通过selenium调用chrome浏览器
  • Spring Cloud Alibaba快速入门02-Nacos(中)
  • Redis集群(redis cluster (去中心化))
  • 无人机航拍数据集|第39期 无人机玉米雄穗目标检测YOLO数据集776张yolov11/yolov8/yolov5可训练
  • PCB下单厂家有哪些?可pcb在线下单厂家
  • 安卓服务的两种启动方式有什么区别
  • Spring Cloud Alibaba 是什么,怎么简单搭建
  • ARM-寄存器与异常处理全解析