码迷,mamicode.com
首页 > 其他好文 > 详细

PAT A1103 Integer Factorization

时间:2020-02-13 00:33:27      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:dfs   index   pat   ons   return   div   c++   int   main   

线性dfs,注意每次深搜完状态的维护~

#include<bits/stdc++.h>
using namespace std;
const int maxn=1010;
vector<int> v,tmp,path;
int n,k,p;
void init () {
    int t=0,cnt=1;
    while (t<=n) {
        v.push_back(t);
        t=pow(cnt,p);
        cnt++;
    }
}
int maxFacSum=-1;
void dfs (int nowindex,int nowsum,int nowK,int facSum) {
    if (nowK>k||nowsum>n) return;
    if (nowK==k) {
        if (nowsum==n) {
            if (facSum>maxFacSum) {
                path=tmp;
                maxFacSum=facSum;
            }
        }
        //tmp.pop_back();
        return;
    }
    while (nowindex>=1) {
        tmp.push_back(nowindex);
        dfs (nowindex,nowsum+v[nowindex],nowK+1,facSum+nowindex);
        tmp.pop_back();
        if (nowindex==1) return;
        nowindex--;
    }
}
int main () {
    scanf ("%d %d %d",&n,&k,&p);
    init ();
    dfs (v.size()-1,0,0,0);
    if (maxFacSum==-1) {
        printf ("Impossible");
        return 0;
    }
    printf ("%d = ",n);
    for (int i=0;i<path.size();i++) {
        if (i!=0) printf (" + ");
        printf ("%d^%d",path[i],p);
    }
    return 0;
}

 

PAT A1103 Integer Factorization

标签:dfs   index   pat   ons   return   div   c++   int   main   

原文地址:https://www.cnblogs.com/zhanglichen/p/12301509.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!