搜索专题——DFS A1103 Integer Factorization(30)
Posted jasonpeng1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索专题——DFS A1103 Integer Factorization(30)相关的知识,希望对你有一定的参考价值。
#include <bits/stdc++.h> #include<math.h> #include <string> using namespace std; //maxFacSum 记录最大底数之和 int n,k,p,maxFaceSum = -1; vector<int> fac,ans,temp; int power(int x){ int ans = 1; for(int i = 0;i<p;++i){ ans *= x; } return ans; } void init(){ int i = 0,temp = 0; while(temp <= n){ fac.push_back(temp); temp = power(++i); } } void DFS(int index,int nowK,int sum,int facSum){ if(sum == n && nowK == k){ if(facSum > maxFaceSum){ ans = temp; maxFaceSum = facSum; } return; } if(sum > n || nowK > k){//这种情况下不会产生答案,直接返回 return; } if(index - 1 >= 0){ temp.push_back(index);//把底数index加入临时序列temp DFS(index,nowK+1,sum+fac[index],facSum+index);//选 temp.pop_back(); DFS(index - 1,nowK,sum,facSum);//不选 } } int main(){ scanf("%d%d%d",&n,&k,&p); init(); DFS(fac.size()-1,0,0,0); if(maxFaceSum == -1){ printf("Impossible "); }else{ printf("%d = %d^%d",n,ans[0],p);//输出ans的结果 for(int i=1;i<ans.size();++i){ printf(" + %d^%d",ans[i],p); } } system("pause"); return 0; }
以上是关于搜索专题——DFS A1103 Integer Factorization(30)的主要内容,如果未能解决你的问题,请参考以下文章
PAT A1103 Integer Factorization
PAT甲级——A1103 Integer Factorization
Leetcode之深度优先搜索(DFS)专题-733. 图像渲染(Flood Fill)
Leetcode之深度优先搜索(DFS)专题-547. 朋友圈(Friend Circles)
Leetcode之深度优先搜索(DFS)专题-DFS+记忆化 329. 矩阵中的最长递增路径(Longest Increasing Path in a Matrix)