南昌网站搭建,记账公司如何拉客户,店铺店面装修,有flash的网站上得厅堂#xff0c;下得厨房#xff0c;写得代码#xff0c;翻得围墙#xff0c;欢迎来到睿不可挡的每日一小练#xff01; 题目#xff1a;按字典顺序列出全部子集 内容#xff1a; 请写一个程序用字典顺序把一个{1,2,3,4,...,n}集合的全部子集找出来。 解答#xff… 上得厅堂下得厨房写得代码翻得围墙欢迎来到睿不可挡的每日一小练 题目按字典顺序列出全部子集 内容 请写一个程序用字典顺序把一个{1,2,3,4,...,n}集合的全部子集找出来。 解答 想必我就不用解释什么是字典顺序了作为乘虚猿和攻城狮大家应该懂得无论你懂不懂反正我懂了 事实上我们能够先列出一个实例观察规律 比如n3 {1} {1,2} {1,2,3} {1,3} {2} {2,3} {3} 能够看出这种规律假设你说我怎么没看出来事实上你能够再多看一会 令一个指针指向第一个元素假设指针指向的元素小于n就使指针加一后指针指向元素等于指针指向前一个元素加一。当指针指向元素等于n时指针回指一位即指针减一指针指向元素加以当指针指向位置为初始位置时指向元素等于n则输出结束了。 事实上这个规律也不是观察实例得出的这就是我们在按字典排序时做的事情仅仅只是人的大脑速度太快非常多过程一步到位而已假设不信你拿出一本字典慢慢尝试看看是不是这种 我的解法上来没多想打开vs2013就敲了起来问题果然非常easy分分钟就超神。。奥不正确就攻克了 #include iostream
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{void subsetInDic(int n);int n;cout 请输入一个n;cin n;cout endl;cout 求出子集按字典顺序排列的结果为 endl;subsetInDic(n);getchar();getchar();return 0;
}void subsetInDic(int n)
{int i,j,set_Index 0;int subsetNum[1000];subsetNum[set_Index] 1;cout { } endl;while (true){cout { ;for (i 0; i set_Index; i)cout subsetNum[i] ;cout };cout endl;if (subsetNum[set_Index] n){subsetNum[set_Index 1] subsetNum[set_Index] 1;set_Index;}else if (set_Index ! 0)subsetNum[--set_Index] 1;elsebreak;}
} 实验结果 最后感谢 hikean 同学在 《列出全部子集》中给给出的更简便效率更快的方法。欢迎大家能给出更好的方法 欢迎大家添每日一小练嘿嘿 每天练一练日久见功夫加油 -End- 參考文献《c语言名题精选百则》 转载于:https://www.cnblogs.com/hrhguanli/p/3774800.html