c语言排班系统 - 爱问答

(爱问答)

c语言排班系统

学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:

钱:星期一、星期六

赵:星期二、星期四

孙:星期三、星期日

李:星期五

周:星期一、星期四、星期六

吴:星期二、星期五

陈:星期三、星期六、星期日


#include <stdio.h>

#include <conio.h>

#define T 7 //排班周期

#define N 7 //人员数目

#define X 1 //每人每周期可以休息X天,X<T

#define Y 1 //每天最多可以有Y人休息,Y>=N*X/T

int total=0;

void Print(int pb[][T]){

   int i,j;

   printf(" XiuXi FangAn %d: ",++total);

   for(i=0;i<N;++i){

       printf("%d:",i);

       for(j=0;j<T;++j){

           if(pb[i][j]==2)printf("%d ",j);

       }

       printf(" ");

   }

   getch();

}

int KeXing(int pb[][T],int k,int j){//检验k人员在j日期休息是否可行

   int s=0,i;

   for(i=0;i<T;++i)s+=(pb[k][i]==2);

   if(s>X)return 0;

   for(s=0,i=0;i<N;++i)s+=(pb[i][j]==2);

   if(s>Y)return 0;

   return 1;

}

void PaiBan(int pb[][T],int k){//给第k位人员安排休息日

   int i,j;

   for(j=0;j<T;++j){

       if(pb[k][j]==1){//k人员愿意在j日期休息

           pb[k][j]=2;

           if(KeXing(pb,k,j)){

               if(k==N-1){//找到一个方案

                   Print(pb);//输出休息方案

               }else{

                   PaiBan(pb,k+1);

               }

           }

           pb[k][j]=1;//准备更换下一个休息意愿日测试

       }

   }

}

int main(){

   int i,j,pb[N][T]={0};

   printf("====PaiBan XiTong==== ");

   printf("XiuXi YiYuan i,j( RenYuan i=0~%d, RiQi j=0~%d, JieShu -1,-1 ): ",N-1,T-1);

   do{

       scanf("%d,%d",&i,&j);

       if(i>=0&&i<N&&j>=0&&j<T){

           pb[i][j]=1;

       }else{

           break;

       }

   }while(1);

   PaiBan(pb,0);

   printf(" Gong You %d Zu FangAn.",total);

   printf(" Finished! ");

   getch();

   return 0;

}


相关标签:c语言

下一篇:麦电脑

上一篇:请教大家1个问题

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?