第一题补充一个递归
#include<iostream> #include<vector>
#include<algorithm> #include<map> using namespace std; int min_cost(int n, int m, int a, int b, map<pair<int, int>, int> &mp){ if(m % n == 0) return 0; pair<int, int> curr = make_pair(n, m); if(mp.find(curr) != mp.end()) return mp[curr]; int cost = min(a + min_cost(n - 1, m, a, b, mp), b + min_cost(n, m + 1, a, b, mp)); mp[make_pair(n, m)] = cost; return cost; } int main(){ int n, m, a, b; while(cin >> n >> m >> a >> b){ map<pair<int, int>, int> mp; cout << min_cost(n, m, a, b, mp) << endl; } return 0; }