NC218878. 学姐的编码2.0
描述
输入描述
一个字符串s表示所给十六进制编码串(1≤|s|≤1000000)(保证所给编码串与标准十六进制一致,编码串中仅可能出现0-9与A-F,不会有多余字符出现)
输出描述
按字典序从小到大输出所有满足条件的编码
示例1
输入:
001A
输出:
0 01 01A 0A 1 1A A
示例2
输入:
00A1
输出:
0 01 0A 1 A
C++(clang++11) 解法, 执行用时: 113ms, 内存消耗: 8556K, 提交时间: 2021-05-06 15:50:18
#include "bits/stdc++.h" using namespace std; string s; vector<int>p[20]; inline int change(char x){ if(x>='A')return x-'A'+10; return x-'0'; } void dfs(int st,int x,string s1){ for(int i=st;i<=15;i++){ auto it=upper_bound(p[i].begin(),p[i].end(),x); if(it!=p[i].end()){ cout<<s1+s[*it]<<endl; dfs(i+1,*it,s1+s[*it]); } } } int main() { cin>>s; for(int i=0;i<s.size();i++) p[change(s[i])].push_back(i); dfs(0,-1,""); return 0; }