动态规划做的,复杂度O(m*n) #include<iostream> #include<vector> using namespace std; //string s; void f(int x,int y,int k,vector<vector<int>> a,string s); int main() {     int x=10;     int y=12;     vector<vector<int>> a(y+1,vector<int>(x+1,0));     for(int i=0;i<=y;i++)         a[i][0]=1;     for(int i=0;i<=x;i++)         a[0][i]=1;     for(int i=1;i<=y;i++)         for(int j=1;j<=x;j++)             a[i][j]=a[i-1][j]+a[i][j-1];     for(int i=0;i<=y;i++)         {         cout<<i<<"行: ";             for(int j=0;j<=x;j++)             cout<<a[i][j]<<" ";         cout<<endl;         }     string s="";    f(x,y,111,a,s); return 0; } void f(int x,int y,int k,vector<vector<int>> a,string s) {     if(k>a[y][x]) {cout<<"too big K"<<endl;return;}     if(x==0||y==0)         {for(int i=0;i<x;i++)             s.push_back('a');         for(int i=0;i<y;i++)             s.push_back('z');         cout<<s<<endl;         return;         }     int nu=0;     for(int i=0;i<=x;i++)         if(nu+a[y-1][i]>=k)             {for(int j=0;j<x-i;j++)                 s.push_back('a');             s.push_back('z');             f(i,y-1,k-nu,a,s);break;             }         else nu+=a[y-1][i]; } don
点赞 评论

相关推荐

牛客网
牛客企业服务