同学面试遇的问题,请高手指点一二 n=0时 {}n=1时 {},{1}n=2时 {},{1},{2}n=3时 {},{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3}请编程实现输入n值,自动打出上面规律的集合。我寻思这是一个有关二维表的问题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我看是这个的一个嵌套:如果要得到n的输入,就要有n-1的输入二份,然后再在第二份的每个括号中续添一个n。以n=3为例,首先要n=2的,n=2时{},{1},{2},{1,2}两份:{},{1},{2},{1,2},{},{1},{2},{1,2}后面的添加3:{},{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3}上面的就是n=3的输出!当然要出2的输入就要1的出入,要出1的就要0的,就到头了,算法就这样,不过实现还没有出来!看大家了! 输入n,a[n+1]={0,1,2,...n}就是求a的冥集void GetPowerSet1(int i,char a[],char b[],int n){ //功能:求以数组a中元素为集合中元素的集合的冥集 int j; if(i==n-1) { b[n]='\0'; for(j=0;j<n+1;j++) if(b[j]!=' ') cout<<b[j]; //对空格不输出 cout<<endl; } else { b[i]=a[i]; GetPowerSet(i+1,a,b,n); b[i]=' '; GetPowerSet(i+1,a,b,n); }} Compuware Devpartner Studio 9.0.2 Professional VS2008如何使用内存泄漏检查 关于unicode编程问题 关于如何限制上网的问题 Windows核心编程的编译错误(看过的请进) 请教一个问题! 指针问题的困扰 有没有哪位兄弟知道sdl这种文件格式啊? 有三个问题,急,给100分 好简单的问题,30分 获取HDIB每个像素的RGB值 请问tab control中的tab标签大小怎么改变? 什么API可以得到OS上的Document的文件夹Path?类似GetTempPath()这样的.谢谢
如果要得到n的输入,就要有n-1的输入二份,然后再在第二份的每个括号中续添一个n。
以n=3为例,
首先要n=2的,
n=2时{},{1},{2},{1,2}
两份:
{},{1},{2},{1,2},{},{1},{2},{1,2}
后面的添加3:
{},{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3}
上面的就是n=3的输出!
当然要出2的输入就要1的出入,
要出1的就要0的,就到头了,算法就这样,不过实现还没有出来!
看大家了!
void GetPowerSet1(int i,char a[],char b[],int n)
{
//功能:求以数组a中元素为集合中元素的集合的冥集
int j;
if(i==n-1)
{
b[n]='\0';
for(j=0;j<n+1;j++)
if(b[j]!=' ') cout<<b[j]; //对空格不输出
cout<<endl;
}
else
{
b[i]=a[i]; GetPowerSet(i+1,a,b,n);
b[i]=' '; GetPowerSet(i+1,a,b,n);
}
}