一道很有趣的java题目(让我们的大脑思考起来)

王小明912 2010-06-04 01:40:38
在网上看到一道有趣的Java题目,具体要求是这样的:

有n张扑克牌,每张牌的取值范围是:2,3,4,5,6,7,8,9,10,J,Q,K,A。在这n张牌中找出顺子(5张及5张以上的连续的牌),并将这些顺子打印出来。

大家赶紧开动一下你们的大脑,谈谈你们的思路和想法。
...全文
969 78 打赏 收藏 转发到动态 举报
写回复
用AI写文章
78 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihuan1106 2010-07-20
  • 打赏
  • 举报
回复
路过....学习!!
xyz451 2010-07-20
  • 打赏
  • 举报
回复
1,随机找出一张存在满足条件的牌
2,根据可以步骤1的结果推算出符合条件的2组结果
3,根据步骤2遍历原数组,根据第二章牌排除一组。纪录相关信息。
cwj01 2010-07-20
  • 打赏
  • 举报
回复
看了前面几十楼的回复,只是感觉SB真多,好在后面有几位达人,不然,我就觉得,CSDN上的都是乌合之众了
haoyuan0815 2010-06-26
  • 打赏
  • 举报
回复
受教了!谢谢楼上这些牛人!回家实验一把!
woi_life 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 71 楼 vsun668899 的回复:]
我觉得大家好像是理解偏了呢,题意不应该是给一个随即的n张牌,然后从目标集里面找出连的5张以上的么?所以我觉得首先得随即生成n张牌从n张随即的牌里面挑出连续的牌数,我的大体思路是这样的你们写代码去吧:
step1.遍历一边n张牌,找出2-A的每张牌的张数。存到一个数组中
step2.先看7的张数和10的张数,先按其中较小的那一个的个数找个数遍,以它为中心往两边尽量的延伸,延伸到的张数减1,直到遇……
[/Quote]

我也感觉是这样,既然说了是扑克牌,那必然会有黑、红、梅、方四个花色,所以这方面是不是也要考虑进去呢?……
gwnszbd123 2010-06-26
  • 打赏
  • 举报
回复
范围有点广啊,不过楼上的都很牛,mark!
dragon45 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 71 楼 vsun668899 的回复:]
我觉得大家好像是理解偏了呢,题意不应该是给一个随即的n张牌,然后从目标集里面找出连的5张以上的么?所以我觉得首先得随即生成n张牌从n张随即的牌里面挑出连续的牌数,我的大体思路是这样的你们写代码去吧:
step1.遍历一边n张牌,找出2-A的每张牌的张数。存到一个数组中
step2.先看7的张数和10的张数,先按其中较小的那一个的个数找个数遍,以它为中心往两边尽量的延伸,延伸到的张数减1,直到遇……
[/Quote]
不谋而合啊~哈哈
vsun668899 2010-06-25
  • 打赏
  • 举报
回复
我觉得大家好像是理解偏了呢,题意不应该是给一个随即的n张牌,然后从目标集里面找出连的5张以上的么?所以我觉得首先得随即生成n张牌从n张随即的牌里面挑出连续的牌数,我的大体思路是这样的你们写代码去吧:
step1.遍历一边n张牌,找出2-A的每张牌的张数。存到一个数组中
step2.先看7的张数和10的张数,先按其中较小的那一个的个数找个数遍,以它为中心往两边尽量的延伸,延伸到的张数减1,直到遇到零为止,再按另一个找,找完结束
amdgaming 2010-06-25
  • 打赏
  • 举报
回复
有空再来看看
dragon45 2010-06-25
  • 打赏
  • 举报
回复
我觉得首先是统计N张牌中,2,3,4,5,6,7,8,9,10,J,Q,K,A得张数。然后从张数最小(假设为M)的开始向两边排序,如果存在连续5张以上的就打印出(同时牌的张数都减去M),直到有牌的张数变为0。

我的思路,具体的算法希望高手给出。
boooch 2010-06-25
  • 打赏
  • 举报
回复
我觉得楼主的意思不是要对这些取排列组合,而且对N个元素,元素的取值范围是2,3,...K,A,这N个既定元素吧。
swit1983 2010-06-25
  • 打赏
  • 举报
回复
我觉得应该考虑到随机性,每次随机从数组中抽一个数。随机抽5次,然后判断是否连续,不连续就继续迭代。否则打印。
kdflove 2010-06-25
  • 打赏
  • 举报
回复
64楼什么意思?没了解
alidion 2010-06-25
  • 打赏
  • 举报
回复
题意不是这样的吧
doti_ 2010-06-25
  • 打赏
  • 举报
回复
有N张牌,当然就有2张或者3张一样的牌。。
ycdzl 2010-06-25
  • 打赏
  • 举报
回复
public static void main(String[] args) {
String str = "2,3,4,5,6,7,8,9,10,J,Q,K,A";
String[] pai=str.split(",");
long start=System.currentTimeMillis();
for(int i=-1;i<pai.length;i++){
if(i==-1){
for(int j=4;j<=pai.length-1;j++){
System.out.print(pai[12]+" ");
for(int k=0;k<j;k++){
System.out.print(pai[k]+" ");
}
System.out.println();
}
}else{
for(int j=5;j<=pai.length-i;j++){
for(int k=0;k<j;k++){
System.out.print(pai[i+k]+" ");
}
System.out.println();
}
}
}
System.out.println(System.currentTimeMillis()-start+"毫秒");
}

A 2 3 4 5
A 2 3 4 5 6
A 2 3 4 5 6 7
A 2 3 4 5 6 7 8
A 2 3 4 5 6 7 8 9
A 2 3 4 5 6 7 8 9 10
A 2 3 4 5 6 7 8 9 10 J
A 2 3 4 5 6 7 8 9 10 J Q
A 2 3 4 5 6 7 8 9 10 J Q K
2 3 4 5 6
2 3 4 5 6 7
2 3 4 5 6 7 8
2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 J
2 3 4 5 6 7 8 9 10 J Q
2 3 4 5 6 7 8 9 10 J Q K
2 3 4 5 6 7 8 9 10 J Q K A
3 4 5 6 7
3 4 5 6 7 8
3 4 5 6 7 8 9
3 4 5 6 7 8 9 10
3 4 5 6 7 8 9 10 J
3 4 5 6 7 8 9 10 J Q
3 4 5 6 7 8 9 10 J Q K
3 4 5 6 7 8 9 10 J Q K A
4 5 6 7 8
4 5 6 7 8 9
4 5 6 7 8 9 10
4 5 6 7 8 9 10 J
4 5 6 7 8 9 10 J Q
4 5 6 7 8 9 10 J Q K
4 5 6 7 8 9 10 J Q K A
5 6 7 8 9
5 6 7 8 9 10
5 6 7 8 9 10 J
5 6 7 8 9 10 J Q
5 6 7 8 9 10 J Q K
5 6 7 8 9 10 J Q K A
6 7 8 9 10
6 7 8 9 10 J
6 7 8 9 10 J Q
6 7 8 9 10 J Q K
6 7 8 9 10 J Q K A
7 8 9 10 J
7 8 9 10 J Q
7 8 9 10 J Q K
7 8 9 10 J Q K A
8 9 10 J Q
8 9 10 J Q K
8 9 10 J Q K A
9 10 J Q K
9 10 J Q K A
10 J Q K A
15毫秒
aoli444 2010-06-25
  • 打赏
  • 举报
回复
有n张扑克牌,每张牌的取值范围是:2,3,4,5,6,7,8,9,10,J,Q,K,A。在这n张牌中找出顺子(5张及5张以上的连续的牌),并将这些顺子打印出来。

我觉得各位应该把题目的原意理解清楚。
n张牌是随机取的 ,不一定是排序好的,已不一定是连续的
ycdzl 2010-06-25
  • 打赏
  • 举报
回复
怎么没有 A2345 A23456 。。。。。
head_java_web 2010-06-25
  • 打赏
  • 举报
回复
wangcfxbg

也不错
gamer1 2010-06-25
  • 打赏
  • 举报
回复
题本身没有什么难度,建议大家吧运行时间也贴出来吧。
加载更多回复(58)
本课程名为《由浅入深学Java》,是专门面向零基础学员量身打造的一门课程!其目的是帮助有志于成为Java工程师的学员迈出实现理想的第一步--跨过Java语法这个门槛。课程共有三个板块,分别是《零基础学Java》、《零基础学Java习题精讲》和《Java高级语法》。《零基础学Java》的目标是带领零基础的学员学会Java语言的最基本语法,达到快速入门的目的。该课程主要讲解Java基本常识、Java基础语法、面向对象思想及相关语法细节,以及异常的概念和处理方法。学员掌握了基础语法之后,紧接着做的事情就是夯实理论基础以及提高实战能力。第二板块《零基础学Java习题精讲》就是为此目标而精心设计的。该课程分为两部分,分别是《选择问答篇》和《编程篇》。《选择问答篇》中精选了很多有代表性的题目,帮助学员进一步理解Java语法细节,并扫除那些掌握不扎实的知识漏洞。《编程篇》则精选了几十个经典编程题,帮助学员提升逻辑思维能力和解决问题的实战能力!掌握了Java基础语法之后,还要继续提升战斗力!第三板块《Java高级语法》已经来到了你的面前!这门课程是Java语法的进阶课程。主要讲解Java语言的高级语法:如位运算符、内部类、泛型、Lambda表达式等知识点。认真学习完本专题的三门课程,你的Java语法就能达到过关的水平,后续在学习Java API、Java WEB、Android开发、第三方框架的使用等高级课程的时候,你将不会再有“语法”问题!整个课程选用当前行业中使用最广泛的Java17为开发环境进行讲解。效果好不好,学了就知道! 

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧