//扑克牌的顺子
//题目:在一个扑克牌中随机的抽5张牌,看是不是顺子。大小王为0,A为1,J为11,Q为12,K为13.其他数字为自己本身。
//思路:大小王可以代表任意一个数字,因此我们在看是不是顺子之前要先对数字进行排序,数出0的个数。
//如果相连的两个数字之间相差的总数是超出0的个数,那么就不是顺子,否则就是
public class IsContinue {
public void bubbleSort(
int[] a){
if(a==
null)
return;
//要进行n-1趟排序
for(
int i=0;i<a.length;i++
){
for(
int j=0;j<a.length-i-1;j++
){
if(a[j]>a[j+1
])
swrap(a,j,j+1
);
}
}
}
public void swrap(
int[] a,
int j,
int i) {
int temp=
a[i];
a[i]=
a[j];
a[j]=
temp;
}
public boolean isContinues(
int[] a){
bubbleSort(a);
int count=0
;
for(
int i=0;i<a.length;i++
){
if(a[i]==0
)
count++
;
else
break;
}
int small=count;
//指向非零的数中的较小的数
int big=count+1;
//指向较大的数
int interval=0;
//较大的数减去相连的较小的数再减1后剩下的数。
for(;big<a.length;big++
){
if(a[small]==a[big])
//有对子,就不是顺子。
return false;
interval+=a[big]-a[small]-1
;
small=
big;
}
if(interval>
count)
return false;
return true;
}
public static void main(String[] args){
int[] a={0,8,5,6,3
};
IsContinue isContinue=
new IsContinue();
isContinue.bubbleSort(a);
for(
int i:a)
System.out.print(i+" "
);
System.out.println();
if(isContinue.isContinues(a))
System.out.println("是顺子"
);
else
System.out.println("不是顺子"
);
}
}
转载于:https://www.cnblogs.com/hupp/p/4773003.html
转载请注明原文地址: https://mac.8miu.com/read-23230.html