[计蒜客][搜索枚举]文具店 原创

题目来源 计蒜客程序设计竞赛基础课(蓝桥杯省赛)

算法标签 深度优先搜索

题目描述在这里插入图片描述

思路

意思就是将字符串分割成k串,累加答案尽可能的小
dfs枚举

AC代码

#include<iostream>
#include<string>

using namespace std;

string s;
int k,sum,re,ans=0x3f3f3f;//ans设置为最大值

void dfs(int cnt,int cho,int sum,int re)//cnt 当前过到第几个数字了,cho选择了第几个数字,
//sum价值总和,re 到当前位置剩余没被选的价值
{
  if(cnt==s.size())
    if(!cho){ans=min(ans,sum+re);return ;}//如果选择完了,更新
  
  if(cho+cnt>=s.size())return ;//如果当前位次加可选已经超过或者到了总数,就返回
  dfs(cnt+1,cho,sum,re*10+s[cnt]-48);//不选
  if(cho)dfs(cnt+1,cho-1,sum+re*10+s[cnt]-48,0);//选
}

int main()
{
  cin>>s>>k;
	
  dfs(0,k-1,0,0);
  
  cout<<ans;
  
  return 0;
}
posted @ 2021-12-27 22:33  俺叫西西弗斯  阅读(0)  评论(0)    收藏  举报  来源