小米后台研发第三题
发布于 2017-09-18 21:11 2200 次浏览 0 赞 来自 试题交流  
#include <iostream>
#include <vector>
#include <stdlib.h>
using namespace std;

void func(string num, string output, vector<string> &outputs, int i, int end) {
    if (i > end) {
        outputs.push_back(output);
        return;
    } 
    
    if (i == end || i < end && num[i + 1] != '0') {
        func(num, output + char('a' + (num[i] - '1')), outputs, i + 1, end);
    }
    
    if (i < end) {
        if (num[i] == '1' || (num[i] == '2' && (num[i + 1] >= '0' && num[i + 1] <= '6'))) {
            string temp1;
            temp1 += num[i];
            temp1 += num[i + 1];
            int temp2 = atoi(temp1.c_str());
            func(num, output + char('a' + (temp2 - 1)), outputs, i + 2, end);
        }
    }
}

int main(int argc, char* argv[]) {
    string num;
    while (cin >> num) {
    	vector<string> outputs;
        func(num, "", outputs, 0, num.length() - 1);
        
        int i = 0;
        for (; i < outputs.size() - 1; i++) {
            cout << outputs[i] << " ";
        }
        cout << outputs[i] << endl;
    }
}


2 条回复

没时间了

2017-09-18 21:26
coder_NC44SQXD 回复 coder_5STS9YUG

这题是最简单的!!!

2017-09-18 21:58
添加回复
回到顶部