PAT 1038

来源:互联网 发布:剑灵正太捏脸数据 编辑:程序博客网 时间:2024/06/06 16:30
#include #include #include using namespace std;int N;struct num {int sum=0;num* next[10] = { nullptr,nullptr,nullptr,nullptr,nullptr,nullptr,nullptr,nullptr,nullptr,nullptr };int end = 0;};num* nums = new num;list res;int getmin() {int res = 0;while (nums->next[res] == nullptr || nums->next[res]->sum <= 0) res++;return res;}int main() {cin >> N;getchar();for (int i = 0; i < N; i++){int j = 0;char c;num* temp = nums;while ((c = getchar())!=' ' && c!='\n') {if (temp->next[c - '0'] == nullptr) temp->next[c - '0'] = new num;temp->next[c - '0']->sum++;temp = temp->next[c - '0'];}temp->end++;}num* temp = nums;nums->sum = N+1;while (nums->sum > 0) {temp->sum--;int i = 0;while (temp->next[i] == nullptr || temp->next[i]->sum <= 0) {i++;if (i==10) break;}if (temp->end != 0 && i != 10) {if (i > getmin()) {temp->end--;temp = nums;}else {res.push_back(i);temp = temp->next[i];}}else if (temp->end != 0) {temp->end--;temp = nums;}else if (i != 10) {res.push_back(i);temp = temp->next[i];}}while (!res.empty() && res.front() == 0) res.pop_front();if (res.empty()) cout << 0;for (auto it : res) cout << it;system("PAUSE");return 0;}
原创粉丝点击