问题描述
- 抽签结果,不知道怎么使用数组(第一次使用)
-
两队比赛,甲队A.B.C.D乙队W.X.Y.Z,已知A不与X比赛,C不与X.Z比赛,D不与W比赛。。。。输出所有可能的结果。。。。求大神解答告诉我应该怎么思考,谢谢
解决方案
#include
#include
using namespace std;
char A[3]={'W','Y','Z'};
char B[4]={'W','X','Y','Z'};
char C[2]={'W','Y'};
char D[3]={'X','Y','Z'};
int flag[4];
int main()
{
int num=1;
memset(flag,0,sizeof(flag));
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
for(int k=0;k<2;k++)
{
for(int m=0;m<3;m++)
{
flag[A[i]-87]=1; //将W,X,Y,Z映射成0,1,2,3
flag[B[j]-87]=1;
flag[C[k]-87]=1;
flag[D[m]-87]=1;
if(flag[0]==1&&flag[1]==1&&flag[2]==1&&flag[3]==1)
{
cout<<"分组"<<num++<<endl;
cout<<"A vs "<<A[i]<<endl;
cout<<"B vs "<<B[j]<<endl;
cout<<"C vs "<<C[k]<<endl;
cout<<"D vs "<<D[m]<<endl;
cout<<endl;
}
memset(flag,0,sizeof(flag));
}
}
}
}
return 0;
}
解决方案二:
最暴力的是排除约束后四层for循环判断可行性。或者用深度优先搜索。
解决方案三:
用多层for语句嵌套,枚举每种情况。用if语句判断,把符合情况的输出来。
解决方案五:
代码片没贴好,你把头文件自己补一下把~
时间: 2024-11-03 21:57:39