程序设计之值班排班程序

题目大意:从键盘录入每个施工人员自己认为合适的休息日。[尽可能考虑所有可能的情况] 例如每人选择的休息日如下: a:星期二、星期四 b:星期一、星期六 c:星期三、星期日 d:星期五 e:星期一、星期四、星期六 f:星期二、星期五 g:星期三、星期六、星期日 在屏幕上显示轮休的所有可能方案,当然必须使每个人都满意。

由于没有限制,就暴力解了,7层循环/(ㄒoㄒ)/~~ 亮点在输入的处理:二维字符串的形式,参照DFS和BFS的图形读入方法; 再转换为数组形式; 代码如下:

#include <iostream>
#include <cstring>
using namespace std;
char a[8][15];
int b[8][8];
int c[8]={
         
  0};
int l1,l2,l3,l4,l5,l6,l7;

int main()
{
    for( int i=0;i<7;i++)
    {
        cout<<"输入"<<" "<<i+1<<" "<<"号员工渴望放假的时间:"<<endl; 
        gets(a[i]);
    }
    for(int i=0;i<7;i++)
    {
        for(int j=0;j<15;j++)
        {
            if(a[i][j]<=7&&a[i][j]>=1)
            {
                b[i][c[i]]=a[i][j]-0;
                c[i]++;
            }
        }
    }
    int t=1;
    for(l1=0;l1<c[0];l1++)
    {
        for(l2=0;l2<c[1];l2++)
        {
            if(b[0][l1]==b[1][l2])
            continue;
            for(l3=0;l3<c[2];l3++)
            {
                if(b[2][l3]==b[0][l1]||b[2][l3]==b[1][l2])
                continue;
                for(l4=0;l4<c[3];l4++)
                {
                    if(b[3][l4]==b[0][l1]||b[3][l4]==b[1][l2]||b[3][l4]==b[2][l3])
                        continue;
                    for(l5=0;l5<c[4];l5++)
                    {
                        if(b[4][l5]==b[0][l1]||b[4][l5]==b[1][l2]||b[4][l5]==b[2][l3]||b[4][l5]==b[3][l4])
                            continue;
                        for(l6=0;l6<c[5];l6++)
                        {
                            if(b[5][l6]==b[0][l1]||b[5][l6]==b[1][l2]||b[5][l6]==b[2][l3]||b[5][l6]==b[3][l4]||b[5][l6]==b[4][l5])
                                continue;
                            for(l7=0;l7<c[6];l7++)
                            {
                                if(b[6][l7]==b[0][l1]||b[6][l7]==b[1][l2]||b[6][l7]==b[2][l3]||b[6][l7]==b[3][l4]||b[6][l7]==b[4][l5]||b[6][l7]==b[5][l6])
                                continue;
                                cout<<"第"<<" "<<t<<" "<<"种情况:"<<endl; 
                                t++;
                                cout<<"放假时间:"<<"1号员工"<<" "<<"2号员工"<<" "<<"3号员工"<<" "<<"4号员工"<<" "<<"5号员工"<<" "<<"6号员工"<<" "<<"7号员工"<<endl;
                                cout<<"第几天:    "<<b[0][l1]<<"      "<<b[1][l2]<<"        "<<b[2][l3]<<"       "<<b[3][l4]<<"       "<<b[4][l5]<<"      "<<b[5][l6]<<"      "<<b[6][l7]<<endl;
                            }
                        }
                    }
                }
            }
        }
    }
    if(t==1)
    {
        cout<<"别想放假了,滚蛋去!"<<endl; 
    }
    /*for(int i=0;i<7;i++)
    {
        for(int j=0;j<c[i];j++)
        {
            cout<<b[i][j];
        }
        cout<<endl;
    }*/


    return 0;
}

暴力循环代码参考同学:

仅代表个人观点,欢迎交流探讨,勿喷~~~

PhotoBy:WLOP

经验分享 程序员 微信小程序 职场和发展