解题思路:对于每一个字符串,判断第n-1个位置能不能放,如果不能再去前面找,如果可以,就把从当前位置开始,所有的值都往后加一位。这里我用一个map维护数字与字符之间的映射,方便查找。发现规律:倒数第i位数的值不会超过t+1-i。
#include#define MAX 27 using namespace std; int s,t,w; vector arr;//存储字符串对应的位置 map mp;//维护数字到字符的映射 int cur_index = 0;//计数 void init() { for(int i=1;i<=26;i++) { mp[i]=char(i+96); } } bool check() { //验证当前的序列是否是最大的序列 int size = arr.size(); int temp;//倒数第temp个 for(int i=size-1;i>=0;i--) { temp = size-i; if(arr[i] =0;i--) { temp = size-i; if(arr[i] =1) { for(int i=0;i=5) { return; } find_next(); cur_index+=1; fun(); } int main() { cin>>s>>t>>w; char c; int temp; for(int i=0;i >c; temp = int(c)-int('a')+1; arr.push_back(temp); } init(); fun(); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)