2 条题解

  • 0
    @ 2023-8-15 9:02:20
    #include <cstdio>
    #include <vector>
    #include <algorithm>
    using namespace std;
    vector<int> run(int n, int a, int k) {
    	vector<int> res;
    	int g = a % 10;
    	int b1 = g - 1, b2 = g + 1;
    	if (b1 < 0) b1 = 9;
    	else if (b2 > 9) b2 = 0;
    	if (k <= 0) {
    		res.push_back(a);
    		return res;
    	} else if (n == 1) {
    		res.push_back(b1);
    		res.push_back(b2);
    		res.push_back(g);
    		return res;
    	}
    	vector<int> l1 = run(n - 1, a / 10, k - 1);
    	for (int i : l1)
    		res.push_back(i * 10 + b1),
    		res.push_back(i * 10 + b2);
    	vector<int> l2 = run(n - 1, a / 10, k);
    	for (int i : l2)
    		res.push_back(i * 10 + g);
    	return res;
    }
    int main() {
        int n, a, k;
        scanf("%d%d%d", &n, &a, &k);
        vector<int> resl = run(n, a, k);
        sort(resl.begin(), resl.end());
        for (int i : resl) printf("%d\n", i);
        return 0;
    }
    

    最优解

    信息

    ID
    105
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    125
    已通过
    9
    上传者