dfs求调
查看原帖
dfs求调
1168588
FASTergood楼主2024/4/24 20:34
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int m, n, i, j,t,ans=0x3f3f3f3f,cnt=0;
int g[100][100];
string s1;
int go(int x,string s)
{
	int len = s.length();
	int d = stoi(s);
	int x1 = d % (len - x);
	int x2 = d / (len - x);
	
	return x1 + x2;
}
int dfs(int x,string s,int t,int cnt)
{
	//cnt++;
	if (g[x][t])return g[x][t];
	if (s == s1)return cnt;
	if (x > t - 1)return 0x3f3f3f3f;
	string s2 = to_string(go(x, s));
	 t = s2.length();
	int ans = 0x3f3f3f3f;
	for (int i = 1;i <= t;i++)ans = min(ans, dfs(x + i, s2, t,++cnt));
	g[x][t] = ans;
	return ans;
}
int main()
{
	cin >> m >> s1;
	string s = to_string(m);
	t = s.length();
	cout << dfs(1, s, t,0);
}
2024/4/24 20:34
加载中...