• 每日一小练——按字典顺序列出全部子集


    上得厅堂,下得厨房。写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练。


    题目:按字典顺序列出全部子集


    内容:

    请写一个程序用字典顺序把一个{1,2,3,4,...,n}集合的全部子集找出来。


    解答:

    想必我就不用解释什么是字典顺序了。作为乘虚猿和攻城狮大家应该懂得,无论你懂不懂,反正我懂了!

    事实上我们能够先列出一个实例,观察规律:

    比如n=3

    {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;
    		else
    			break;
    	}
    }


    实验结果:




    最后感谢 @hikean 同学在  《列出全部子集》中给给出的更简便。效率更快的方法。欢迎大家能给出更好的方法!


    欢迎大家增加每日一小练,嘿嘿!

    每天练一练。日久见功夫,加油!


                -End-

    參考文献:《c语言名题精选百则》




  • 相关阅读:
    SVN中Revert changes from this revision 跟Revert to this revision
    bootstrap中如何使input中的小图标获得点击事件
    基于Bootstrap使用jQuery实现输入框组input-group的添加与删除-改进版
    MVC4 Controller 与 WebApi 的 Session 传值问
    MVC Razor与javascript混编(js中嵌入razor)
    Asp.net mvc怎么在razor里写js代码
    MVC后台数据赋值给前端JS对象
    ASP.NET MVC自定义验证Authorize Attribute(包含cookie helper)
    ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存
    【记录】【solr】solr7.2.1原子更新
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10942464.html
  • Copyright © 2020-2023  润新知