学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:
钱:星期一、星期六
赵:星期二、星期四
孙:星期三、星期日
李:星期五
周:星期一、星期四、星期六
吴:星期二、星期五
陈:星期三、星期六、星期日
运行结果:
Solution: 1
赵 钱 孙 李 周 吴 陈
=============================================================
星期四 星期一 星期三 星期五 星期六 星期二 星期日
Solution: 2
赵 钱 孙 李 周 吴 陈
=============================================================
星期四 星期一 星期日 星期五 星期六 星期二 星期三
Solution: 3
赵 钱 孙 李 周 吴 陈
=============================================================
星期四 星期六 星期三 星期五 星期一 星期二 星期日
Solution: 4
赵 钱 孙 李 周 吴 陈
=============================================================
星期四 星期六 星期日 星期五 星期一 星期二 星期三
代码:
#include <bits/stdc++.h>
using namespace std;
void del_element(int arr[],int delect);
int judge(int arr[],int n,int i);
void del_element(int arr[],int delect);
void del_element(int arr[],int n,int delect) { //n为数组的元素个数
for(int i=0; i<=n-1; i++) {
if(delect==arr[i]) {
for(int j=i; j<=n-1; j++) {
arr[j]=arr[j+1];
}
}
}
}
int judge(int arr[],int n,int a) {
for(int i=0; i<n; i++) {
if(arr[i]==a)
return 1;
}
return 0;
}
int main() {
printf("\n\t\t\t\t\t\t\t排班系统\n\n");
printf("请选择自己认为合适的休息日:\n");
printf("(输入提示:输入数字,1代表星期一,依次类推,7代表星期天)\n");
int A1[7],a2[7],a3[7],a4[7],a5[7],a6[7],a7[7];
cout<<"赵:";
int i=0,x;
while(cin>>x) {
A1[i]=x;
i++;
if(cin.get()=='\n')
break;
}
cout<<endl;
cout<<"钱:";
i=0,x=0;
while(cin>>x) {
a2[i]=x;
i++;
if(cin.get()=='\n')
break;
}
cout<<endl;
cout<<"孙:";
i=0,x=0;
while(cin>>x) {
a3[i]=x;
i++;
if(cin.get()=='\n')
break;
}
cout<<endl;
cout<<"李:";
i=0;
while(cin>>x) {
a4[i]=x;
i++;
if(cin.get()=='\n')
break;
}
cout<<endl;
cout<<"周:";
i=0,x=0;
while(cin>>x) {
a5[i]=x;
i++;
if(cin.get()=='\n')
break;
}
cout<<endl;
cout<<"吴:";
i=0,x=0;
while(cin>>x) {
a6[i]=x;
i++;
if(cin.get()=='\n')
break;
}
cout<<endl;
cout<<"郑:";
i=0;
while(cin>>x) {
a7[i]=x;
i++;
if(cin.get()=='\n')
break;
}
int m=1;
for(int a=1; a<=7; a++) {
for(int b=1; b<=7; b++) if(b!=a) {
for(int c=1; c<=7; c++ ) if(c!=a&&c!=b) {
for(int d=1; d<=7; d++) if(d!=a&&d!=b&&d!=c) {
for(int e=1; e<=7; e++) if(e!=a&&e!=b&&e!=c&&e!=d) {
for(int f=1; f<=7; f++) if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e) {
for(int g=1; g<=7; g++) if(g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&g!=f) {
if(judge(A1,sizeof(A1)/4,a)&&judge(a2,sizeof(a2)/4,b)&&judge(a3,sizeof(a3)/4,c)&&judge(a4,sizeof(a4)/4,d)&&judge(a5,sizeof(a5)/4,e)&&judge(a6,sizeof(a6)/4,f)&&judge(a7,sizeof(a7)/4,g)) {
cout<<"Soulution "<<m<<":"<<endl;
cout<<"赵 钱 孙 李 周 吴 陈 "<<endl;
cout<<"============================================================= "<<endl;
cout<<"============================================================= "<<endl;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<" "<<g<<endl;
m++;
}
}
}
}
}
}
}
}
}