1103 Integer Factorization 需再做

news/2024/7/1 10:32:59

本题是典型的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;
}


http://lihuaxi.xjx100.cn/news/240849.html

相关文章

Windows和linux双系统——改动默认启动顺序

电脑上装了Windows 7和Ubantu双系统&#xff0c;因为Linux系统用的次数比較少而且还是默认的启动项对此非常不能容忍&#xff0c;因此得改动Windows为默认的启动项。 因为电脑上的系统引导程序是GRUB&#xff0c;因此改动当然也就落到Linux系统上啦。改动/boot/grub/grub.cfg该…

Java设计模式——适配器模式

《JAVA与模式》之适配器模式 在阎宏博士的《JAVA与模式》一书中开头是这样描述适配器&#xff08;Adapter&#xff09;模式的&#xff1a; 适配器模式把一个类的接口变换成客户端所期待的另一种接口&#xff0c;从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。…

1130 Infix Expression

考察&#xff1a;DFS进行中序遍历。 注意&#xff1a;给除了根节点以外的父节点加左右括号。 AC代码 #include<cstdio> #include<iostream> #include<set> #include<vector> #include<map> #include<algorithm> #include<cmath> …

如何实现对象交互

在本篇随笔中&#xff0c;我们学习下什么是对象选择&#xff0c;投影和反投影是如何工作的&#xff0c;怎样使用Three.js构建可使用鼠标和对象交互的应用。例如当鼠标移到对象&#xff0c;对象变成红色&#xff0c;鼠标移走&#xff0c;对象又恢复原来的颜色。 本篇随笔的源代码…

微信公众平台开发(十一) 功能整合

一、简介 在前面的几篇微信功能开发文档中&#xff0c;各个微信的功能都是独立的&#xff0c;单一微信只能提供一种功能&#xff0c;这样不符合大众开发者和客户的需求。所以在这一篇文章中&#xff0c;我们将对前面开发出来的微信功能进行简单整合&#xff0c;以供读者参考。 …

漫谈回溯(未完待续)

将不使用优化算法、直接用朴素算法来解决问题的做法称为暴力法。 回溯是带优化的穷举。 回溯是具有界限函数的深度优先搜索。

iOS开发 最近开发了蓝牙模块,在此记录总结一下

为什么80%的码农都做不了架构师&#xff1f;>>> 1.基本概念 <1>中心者模式&#xff1a;常用的&#xff08;其实99.99%&#xff09;就是使用中心者模式作为开发&#xff0c;就是我们手机作为主机&#xff0c;连接蓝牙外设。由于开发只用到了中心者模式&#x…

Unity接入安卓sdk查看应用内存占用

注&#xff1a;若不清楚如何在unity中接入android sdk可先了解下相关流程。项目地址&#xff1a;http://download.csdn.net/download/yhuangher/9976564 在项目后期进行内存优化&#xff0c;在android端进行内存优化时做了若干辅助工具&#xff0c;比如此款&#xff0c;查看系统…