贝蒂买桔子

Posted on 2022-05-11 17:25  精神小伙hhh  阅读(264)  评论(0编辑  收藏  举报

贝蒂去超市买桔子,超市有n个桔子,每个桔子都有唯一的英文字母标号,贝蒂打算从所有桔子中挑选出若干个桔子买(也可能一个都不买),请编写程序帮助贝蒂求出所有可能的挑法。每种挑法按字典序给出各桔子的标号。

字典序,即字符串在字典中的顺序。对于两个字符串,从第一个字符开始比较,当某一个位置的字符不同时,该位置字符较小的串,字典序较小,例如abc比abd小。

输入格式:

输入为一个正整数n,表示超市里的桔子个数,n不超过15。桔子的标号为a, b, c, d…。若n=1,桔子为a;若n=3,桔子为a, b, c;若n=4,桔子为a, b, c, d;以此类推。

输出格式:

输出为若干行字符串,每行表示贝蒂的一种挑法。每种挑法用{}包含,每个桔子的标号用西文逗号间隔,例如{a,b,c},标号须按字典序排列。“什么也不买”对应的挑法最先输出,为{},中间无空格。

输入样例:

3
 

输出样例:

{}
{a}
{a,b}
{a,b,c}
{a,c}
{b}
{b,c}
{c}


 1 /*
 2  *@Author:   jingshenxiaohuo
 3  *@Language: C++
 4  *                  __----~~~~~~~~~~~------___
 5 ////////////////////////////////////////////////////////////////////
 6 //                          _ooOoo_                               //
 7 //                         o8888888o                              //
 8 //                         88" . "88                              //
 9 //                         (| ^_^ |)                              //
10 //                         O\  =  /O                              //
11 //                      ____/`---'\____                           //
12 //                    .'  \\|     |//  `.                         //
13 //                   /  \\|||  :  |||//  \                        //
14 //                  /  _||||| -:- |||||-  \                       //
15 //                  |   | \\\  -  /// |   |                       //
16 //                  | \_|  ''\---/''  |   |                       //
17 //                  \  .-\__  `-`  ___/-. /                       //
18 //                ___`. .'  /--.--\  `. . ___                     //
19 //              ."" '<  `.___\_<|>_/___.'  >'"".                  //
20 //            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
21 //            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
22 //      ========`-.____`-.___\_____/___.-`____.-'========         //
23 //                           `=---='                              //
24 //      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
25 //                      Buddha bless never bugs                   //
26 ////////////////////////////////////////////////////////////////////
27 */
28 
29 #include<iostream>
30 #include<algorithm>
31 #include<cstdio>
32 #include<cstring>
33 #include<cmath>
34 #include<map>
35 #include<vector>
36 #include<queue>
37 #include<set>
38 #define long long ll
43 using namespace std;
44 int a[15] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o'};
45 int s[15];
46 int t=0,n;
47 int print(){
48     printf("{");
49     for(int i=0;i<t-1;i++){
50          printf("%c,",s[i]+97);
51     }    printf("%c",s[t-1]+97);
52     printf("}\n");
53     return 0;
54 }
55 int main(){
56     cin>>n;
57     s[t++] = 0;
58     int tmp;
59     cout<<"{}"<<endl;
60     cout<<"{"<<"a"<<"}"<<endl;
61     while(t>0){
62         tmp = s[t-1];
63         if(tmp+1<n){
64             s[t++] = tmp+1;
65             print();
66         }else {
67             t--;
68             if(t>0){
69             s[t-1] = s[t-1]+1;
70             print();
71         }
72         }
73     }
74 
75     return 0;
76 }