设计一个奇怪的小程序, 遇到一些问题, 求助高手们

问题描述

hi各位,JAVA新人向大家报道,我最近在写一个小程序:某集合A含元素{a,b,c}它所有的幂集就是:{a,b,c}{a,b}{a,c}{b,c}{a}{b}{c}到这里为止都很简单接下来呢,问题来了,要自行选取幂集中的几个元素,组成一个小组,每个元素的父集(超集)都必须包含在小组里,举两个例子更直观一些哈:比如我选了{b},那么我一定要选{a,b},{b,c},{a,b,c},因为它们都包含了{b};又比如我选了{a,c},那么我一定得再选{a,b,c},因为它包含了{a,c}.我需要想出一个办法,来测试每次选择的几个元素是不是都符合这个要求,目前为止就差这一步请教大家,期待有好的建议,提前谢谢大家!

解决方案

解决方案二:
这几种情况中没有其他的联系?集合里的数据,是独立的,没有办法关联啊,只有手动判断
解决方案三:
引用1楼xiaojiit的回复:

这几种情况中没有其他的联系?集合里的数据,是独立的,没有办法关联啊,只有手动判断

谢谢小强,应该没有,我也没想好这步应该怎么写只是设计了一个项A,定义所有幂集里的子集,做出每个选项,每勾选一个就自动add该子集,但是不知道用什么方法来检测结果......
解决方案四:
看了感兴趣写了个抛砖引玉。验证思路:所有的集合all选出的集合select剩下的集合noselect=all-selectselect中长度最短的元素的集合child如果noselect中还包含child中的元素则不符合要求反之则符合要求。
解决方案五:
publicclassTest{privatestaticSet<String>all=newHashSet<String>();static{all.add("a,b,c");all.add("a,c");all.add("b,c");all.add("a,b");all.add("c");all.add("b");all.add("a");}publicstaticvoidmain(String[]args){List<String>select=newArrayList<String>();select.add("a,b,c");select.add("a,b");select.add("a,c");select.add("a");List<String>child=newArrayList<String>();inti=4;for(Strings:select){if(s.length()<i){child.clear();child.add(s);i=s.length();}elseif(s.length()==i){child.add(s);}all.remove(s);}StringBuffernoselect=newStringBuffer();for(Strings:all){noselect.append(s);//System.out.println("s="+s);}booleansign=true;for(Strings:child){if(noselect.toString().indexOf(s)>-1){//System.out.println(noselect.toString());//System.out.println(s);sign=false;break;}}if(sign){System.out.println("你所选的集合符合要求");}else{System.out.println("你所选的集合不符合要求");}}}
解决方案六:
引用4楼kstring的回复:

publicclassTest{privatestaticSet<String>all=newHashSet<String>();static{all.add("a,b,c");all.add("a,c");all.add("b,c");all.add("a,b……

谢谢高人提供的思路和例子,很棒的解答方法!我把零食都吃光了都没想到这步.我试了一下,只是这一段里,List<String>child=newArrayList<String>();inti=4;for(Strings:select){if(s.length()<i){child.clear();child.add(s);i=s.length();}elseif(s.length()==i){child.add(s);}all.remove(s);}橙色的部分报错,说找不到select,很奇怪...

时间: 2024-10-02 21:01:48

设计一个奇怪的小程序, 遇到一些问题, 求助高手们的相关文章

c++-设计一个完整的C++程序

问题描述 设计一个完整的C++程序 设计一个完整的C++程序,把某个班的学生信息保存在磁盘文件中.学生信息包括学号.姓名.电话号码.QQ号.E_mail和家庭地址,以二进制的形式存放到磁盘中.从磁盘中读取出来,并显示在屏幕上,然后输入学生的QQ号,查找是否有该学生信息,有则显示该学生信息,无则显示查找失败. 解决方案 啥意思?命题作文??? 解决方案二: c#我倒是会一点,但是C++写真不会 解决方案三: 定义一个相应的结构体数组,把数据从文件读到数组中,再自定义一个打印函数和查找函数,我记得我

c语言-用vc6.0编写一个整人的小程序(我想要详细的做法和解除的方法)

问题描述 用vc6.0编写一个整人的小程序(我想要详细的做法和解除的方法) 通过QQ等发给别人,在对面没有编辑环境的情况下也能整到他(比如让他骂自己不然就重启电脑:让他夸我不然锁住计算机屏幕等等!顺便告诉我怎么发给他,在对方打开时候就执行!) 解决方案 编译完之后的exe就可以直接发了吧 解决方案二: 你可以网上找一个相关的批处理文件,比如说隔一段时间把他的电脑的声音关掉等等,然后设置成开机运行就好 解决方案三: 改变VC6.0程序方法.

格式-一个c语言小程序求解?

问题描述 一个c语言小程序求解? #include int main() { double a=0,b=0; scanf("%f%d",&a,&b); printf("%fn%dn",a,b); system("pause"); return 0; } 输出结果如图所示,为什么输入格式以浮点数形式输入不可以正确输出,而整形的可以 解决方案 C语言格式输入函数scanf()详解 解决方案二: 这是其中对 float 和 double

异步-求一个php+jQuery小程序。

问题描述 求一个php+jQuery小程序. php+jQuery实现输入用户id,异步输出数据库中该id的用户信息.最简单的就好! 解决方案 http://jcyzone.iteye.com/blog/1733668 解决方案二: http://www.jb51.net/article/20733.htmhttp://phpway.blog.163.com/blog/static/212112005201301153512311/ 解决方案三: 那不是很容易么..得到id,,发送ajax请求,

一个简单的小程序 我一天卖2000

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 请人写了一个简单的小程序,当别人提交了信息之后发送到邮箱,而邮箱是163的,开通了手机邮,也就是说,当用户提交了信息之后手机马上短信通知. 使用的是JMAIL组件.与之不同的是,发送三个邮箱. 还有一个功能就是读取数据库生成一个A4纸大的表格,可以很方便的打出来而不用录入到word.最后就是生成信封,原理同前,只是模板改成了信封. 再加上其他

c语言-C语言写的一个实时时间小程序,用的多线程屏幕问题

问题描述 C语言写的一个实时时间小程序,用的多线程屏幕问题 这是一个子程序,我想把这个调试好了加到另一个工程里,因为要实时显示时间,所以用到了多线程,现在的问题是子线程执行的时候 光标就移动到这行后面,主线程再打印什么东西的时候,屏幕显示就乱套了,怎么能解决啊,下面是代码片段. void real_time(int X,int Y) //显示时间的函数,用到了光标移动函数,X,Y表示坐标 { HideCursor(10, 0); //隐藏光标函数 hout = GetStdHandle(STD_

Illustrator设计一个可爱的小老鼠头像绘制教程

给各位Illustrator软件的使用者们来详细的解析分享一下设计一个可爱的小老鼠头像的绘制教程. 教程分享: 1.在Ai软件中,新建一个800*800的文档,选择椭圆工具,画一个椭圆图形,并填充颜色,如图所示   2.然后再选择椭圆工具,按住shift画多个正圆图形,并填充颜色,如图所示   3.再选择椭圆工具,画3个椭圆图形,并填充颜色,如图所示     4.接着选择钢笔工具,勾出如下的路径,并填充颜色,如图所示   5.最后再选择椭圆工具,画4个椭圆图形,并填充颜色,如图所示     6.

VC++的win32小程序内存泄漏,求高手解答

问题描述 VC++的win32小程序内存泄漏,求高手解答 做的一个简单的交通模拟小程序,用三个定时器分别产生 汽车处理消息,红绿灯更换消息和汽车随机产生消息.但是最后程序内存越跑越大.求高手解答.http://download.csdn.net/detail/hdwbdbsm/6724747这个是程序的下载地址,求高手.

Illustrator设计一个指引路牌小图标绘制教程

给各位Illustrator软件的使用者们来详细的解析分享一下设计一个指引路牌小图标的绘制教程. 教程分享: 1.在Ai软件中,新建一个800*800的文档,选择圆角矩形工具,画两个圆角图形,并填充颜色,如图所示   2.然后选中圆角图形到对象-路径-偏移路径,并填充颜色,如图所示       3.接着选择钢笔工具,勾出如下的图形,并填充颜色,如图所示   4.接下来选择圆角矩形工具,画两个圆角图形,并填充颜色,如图所示   5.最后选择矩形工具,画两个矩形图形,并填充颜色,如图所示   6.效