不是我错哪了
查看原帖
不是我错哪了
1044770
RJYR楼主2025/1/29 16:12
#include<bits/stdc++.h>
using namespace std;
const int N=45;
const int K=6;
char a[N];
int n, k;
int ans=-1;

void dfs(int num, int item, int sum, int now){
//	cout << "进入函数" << num << ' '<< item << ' '<< sum << ' '<< now << endl;
	if (item==n-1 && num!=0)return ;
	if (item==n-1){
//		cout << "答案输出" << sum*(now*10+(a[item]-'0')) << endl;
		ans = max(sum*(now*10+(a[item]-'0')), ans);	
		return ;
	}
	int newnum , newitem, newsum, newnow;
	if (num>0){
//		cout << a[item] << endl;
		newnum=num-1,newitem=item+1,newsum=sum*(now*10+(a[item]-'0')), newnow=0;
//		cout << "加入乘号" << newnum << ' '<< newitem << ' '<< newsum << ' '<< newnow << endl;
		dfs(newnum, newitem, newsum, newnow);
	} 
	newnum=num,newitem=item+1,newsum=sum, newnow=now*10+(a[item]-'0');
//	cout << "不加入乘号" << newnum << ' '<< newitem << ' '<< newsum << ' '<< newnow << endl;
	dfs(newnum, newitem, newsum, newnow);
}


int main(){
	memset(a, '1', sizeof(a));
	cin >> n >> k;
	cin >> a;
//	for (int i = 0;i<n;i++){
//		cout << a[i];
//	}
	dfs(k, 0, 1, 0);
	cout << ans;
	return 0;
}
2025/1/29 16:12
加载中...