码迷,mamicode.com
首页 > 编程语言 > 详细

(算法初步学习)蛮力法解决生成子集问题

时间:2015-11-30 13:15:03      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

关于蛮力法求生成子集问题

技术分享

 对于算法分析中的问题我已经不想对自己说什么了,到了大三了,竟然还是小白。对生成子集问题我研究了一下午,最后终于想通了。
思路:   1.利用<math.h> 头文件中的pow(x,y)函数来求得2的n次方,作为外循环。2.然后写一个将10进制数转换为2进制数的函数(当然,C中有专门的转换进制的函数在<stdlib.h>中,但是,他转换下来  5不是0101而是101,这就导致需要分开判断,所以不用itoa函数)。
如下:
conversation(int n,int b[MAX])
{
      int I=0;
     for(I;i<MAX;i++)
    {
          b[I]=n%2;
          n=n/2;
          if(n==0)
             break;
    }

3.利用以上函数转换为2进制后,再回到循环体中,利用循环来 输出每次的子集。
完整代码如下:
#include<iostream>
#include<stdlib.h>
#include<String>
using namespace std;
#define MAXSIZE 10
void conversion(int n,int b[])
{
    int i=0;
 for(i;i<MAXSIZE;i++)
 {
  b[i]=n%2;
  n=n/2;
  if(n==0)
   break;
 }
}
void main()
{
 int n;
 cout<<"请输入是几个数的生成子集:\n";
 cin>>n;
 if(n<=MAXSIZE)
 {
   int b[MAXSIZE];
   bool flag = false;
   for(int i=0;i<pow(2,n);i++)
   {
  conversion(i,b);
  for(int j=0;j<MAXSIZE;j++)
  {
   if(b[j]==1)
    {
     cout<<j+1;
     flag = true;
        }
  }
  if(!flag)
   cout<<"空";
  cout<<endl;
   }
 }
 else
  cout<<"数太大了\n";
}
做完这个觉得更应该拿出时间来好好学习算法,这么简单的都设计不出来,未来怎么会成功!!!
加油!!!! 
技术分享
conversation(int n,int b[MAX])
{
      int I=0;
     for(I;i<MAX;i++)
    {
          b[I]=n%2;
          n=n/2;
          if(n==0)
             break;
    }
} 
3.利用以上函数转换为2进制后,再回到循环体中,利用循环来 输出每次的子集。
完整代码如下:
#include<iostream>
#include<stdlib.h>
#include<String>
using namespace std;
#define MAXSIZE 10
void conversion(int n,int b[])
{
    int i=0;
 for(i;i<MAXSIZE;i++)
 {
  b[i]=n%2;
  n=n/2;
  if(n==0)
   break;
 }
}
void main()
{
 int n;
 cout<<"请输入是几个数的生成子集:\n";
 cin>>n;
 if(n<=MAXSIZE)
 {
   int b[MAXSIZE];
   bool flag = false;
   for(int i=0;i<pow(2,n);i++)
   {
  conversion(i,b);
  for(int j=0;j<MAXSIZE;j++)
  {
   if(b[j]==1)
    {
     cout<<j+1;
     flag = true;
        }
  }
  if(!flag)
   cout<<"";
  cout<<endl;
   }
 }
 else
  cout<<"数太大了\n";
}
View Code

 

(算法初步学习)蛮力法解决生成子集问题

标签:

原文地址:http://www.cnblogs.com/yxl-IT/p/5006820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!