#2
秦时的明月夜2015-04-30 17:29
|
程序代码:
#include<iostream>
using namespace std;
int count=0;
int book[5];
char card[5][2]={'2','C','A','D','A','C','J','C','J','H'};
char a[5][2];
void dfs(int step){
if(step==5){
count++;
return ;
}
for(int i=0;i<5;i++){
if(/*a[step][0]!=a[step-1][0]&&*/book[i]==0){//判断条件该牌未被标记且与上一张的牌号不相同,但我不知道应该如何写出这条判断语句,如果我将其注释掉,则输出120,是一个全排列。如果不注释,则输出为0.
a[step][0]=card[i][0];
book[i]=1;//将用过的牌标记
dfs(step+1);
book[i]=0;//取消标记
}
}
return ;
}
int main(){
dfs(0);
cout<<count<<endl;
return 0;
}
using namespace std;
int count=0;
int book[5];
char card[5][2]={'2','C','A','D','A','C','J','C','J','H'};
char a[5][2];
void dfs(int step){
if(step==5){
count++;
return ;
}
for(int i=0;i<5;i++){
if(/*a[step][0]!=a[step-1][0]&&*/book[i]==0){//判断条件该牌未被标记且与上一张的牌号不相同,但我不知道应该如何写出这条判断语句,如果我将其注释掉,则输出120,是一个全排列。如果不注释,则输出为0.
a[step][0]=card[i][0];
book[i]=1;//将用过的牌标记
dfs(step+1);
book[i]=0;//取消标记
}
}
return ;
}
int main(){
dfs(0);
cout<<count<<endl;
return 0;
}
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
我未按照题目要求,只是给出了特定的扑克牌进行算法可行性的验证,如第三组数据所示,该程序应输出48.
现在的问题是不知如何进行条件的判断。悉心向各位请教