📣 独立日限时特惠: VIP通行证立减$68
查看: 2378| 回复: 7
跳转到指定楼层
上一主题 下一主题
收起左侧

算法题,看懂了,却说不出来

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
package career_cup;
/*
* Write a method that returns all subsets of a set
*
*/
/*
* 思路
00 & 01        0

00 & 10        1

00 & 100       2
--------------------
01 & 01           1

01 & 10

01 & 100
--------------------
10 & 01

10 & 10           2

10 & 100
---------------------
11 & 01          1

11 & 10          2

11 & 100     
--------------------
100 & 01

100 & 10

100 & 100         3
----------------------
101 & 01          1

101 & 10         

101 & 100         3
---------------------
110 & 01

110 & 10          2

110 & 100         3
----------------------
111 & 01          1

111 & 10          2

111 & 100         3
*/
public class eight_point_three
{
        public static void main(String args[])
        {
                int a[]={1,2,3};
                for(int x=0; x<(1<<a.length); x++)
                {
                        for(int j=0; j<a.length; j++)
                        {
                                if((x & 1<<j)!=0)
                                {
                                        System.out.print(a[j]+",");
                                }
                        }
                        System.out.println("");
                }
        }
}
如果给别人说这个题的解法思路的话,该怎么描述啊,小学语文没学好,组织不到一起去


上一篇:php面试题
下一篇:征人一起学习Hadoop
🔗
xiayuan0623 2013-6-5 03:18:00 | 只看该作者
全局:
。。话说lz的这个解法挺有意思。。
回复

使用道具 举报

🔗
王可雪 2013-6-5 09:33:53 | 只看该作者
全局:
本帖最后由 王可雪 于 2013-6-5 10:17 编辑

For each subset each element has two possible value 0 or 1(depends on occur or not).We can begin induction with a simple example.
The set of subsets of {1} is {{}, {1}} = { 01 & 00, 01 & 01}
The set of subsets of {1,2,3} is {{}, {1}, {2}, {1,2},{1,3},{2,3},{1,2,3}} which every subset can be represented by 000~111
then we validate whether an element (represented by 01, 10, 100) is in a subset by method &, add {} at last
楼主确定这不是钓鱼贴。。。




回复

使用道具 举报

🔗
silentdai 2013-6-5 14:28:58 | 只看该作者
全局:
这有啥好钓鱼的?

1. 把N个元素的set的幂集和0 .. ((2^n)-1)这2^N个数一一对应,然后从每一个数倒推应该是幂集的哪个元素。这个方式天然地解决了怎么遍历。
2. 递归,把A[1..n]的幂集分成两个部分,一个部分正好是A[2..N]的幂集,另一个部分是A[2..N]的幂集的每个元素加上A[1], 不重不漏
3. 递推,差不多,N个状态机...每个存的不是幂集的本身,二是有没有第i个元素。用这N个独立的状态来决定下一个状态是啥。

简单说,就解决两个问题,一个是怎么遍历幂集,一个是遍历到特定元素的时候怎么输出/转换出你要的结果
回复

使用道具 举报

🔗
rogerdai 2013-6-5 17:59:11 | 只看该作者
全局:
楼上正解,就是输出幂集(powerset)
回复

使用道具 举报

🔗
blactangeri 2013-6-6 16:57:56 | 只看该作者
全局:
楼上正解,就是输出幂集(powerset)
回复

使用道具 举报

🔗
天堂路遥 2013-6-6 19:28:41 | 只看该作者
全局:
用回溯搜索
回复

使用道具 举报

🔗
 楼主| reeeelan 2013-6-7 08:07:56 | 只看该作者
全局:
感谢英文解答,之前一直不知道,如果面试时遇到怎么说,现在会了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表