问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...孙、李、周、吴、陈。由于工作需要进行轮休制度,一星

发布网友 发布时间:2024-10-21 22:04

我来回答

1个回答

热心网友 时间:2024-11-18 05:44

算法1:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Person
{
int cnDay;
int day[7]; //开的足够大,假设某个人可能7天都忙- -.
char pName[10];
};

char name[7][10]; //7个人,每人名字不超过10
Person p[7];//7个人的信息
bool isEmpty[7]={false}; //标记7天已占用情况

void setTable(int i)
{
if(i==7)
{
printf("星期一 星期二 星期三 星期四 星期五 星期六 星期日 \n");
for(int k=0;k<7;++k)
{
printf("%s ",name[k]);
}
printf("\n");
return;
}
int k=0;
for(;k<p[i].cnDay;++k)
{
if(isEmpty[p[i].day[k]]==false)
{
isEmpty[p[i].day[k]]=true;
strcpy(name[p[i].day[k]],p[i].pName);
setTable(i+1);
isEmpty[p[i].day[k]]=false;
}
}
}

int main()
{
int day;
int count;
for(int i=0;i<7;++i)
{
printf("输入第%d个人的名字,然后依次输入每个人的繁忙日,输入0结束此人信息录入!\n",i+1);
count=0;
scanf("%s",p[i].pName);
scanf("%d",&day);
while(day!=0)
{
p[i].day[count]=day-1;
++count;
scanf("%d",&day);
}
p[i].cnDay=count;
}
setTable(0);
return 0;
}
算法2:
#include <stdio.h>

int n = 0;
int rest[7][7];

void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}

void perm(int list[], int k, int m)
{
int i;
int j;
if(k > m)
{
for (i=0; i<7; i++)
{
for (j=0; j<7; j++)
{
if (rest[i][j] == -1)
return;
if (rest[i][j] != list[i])
continue;
if (rest[i][j] == list[i])
break;
}
}

n++;
printf("Solution: %d\n", n);
printf("赵 钱 孙 李 周 吴 陈\n");
printf("=============================================================\n");
for(i = 0; i <= m; i++)
{
switch (list[i])
{
case 1: printf("星期一 ");
break;
case 2: printf("星期二 ");
break;
case 3: printf("星期三 ");
break;
case 4: printf("星期四 ");
break;
case 5: printf("星期五 ");
break;
case 6: printf("星期六 ");
break;
case 7: printf("星期日 ");
break;
default:
break;
}
}
printf("\n\n\n");
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
perm(list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}

int main()
{
int list[] = {1, 2, 3, 4, 5, 6, 7};
int i, j;
for(i = 0; i < 7; i++)
{
printf("Enter the day of %d people rests:\n", i+1);
for(j = 0; j < 7; j++)
{
scanf("%d", &rest[i][j]);
if(rest[i][j] == -1)
break;
}
}
printf("\n\n\n");
perm(list, 0, 6);
printf("total:%d\n", n);
getchar();
getchar();
return 0;
}

使用方法:首先输入每个人希望休息的日期,以-1结束。比如赵休息2,4,则输入:2回车4回车-1回车。输入完7人希望休息的日期后自动排班。
希望对你有所帮助。

热心网友 时间:2024-11-18 05:43

算法1:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Person
{
int cnDay;
int day[7]; //开的足够大,假设某个人可能7天都忙- -.
char pName[10];
};

char name[7][10]; //7个人,每人名字不超过10
Person p[7];//7个人的信息
bool isEmpty[7]={false}; //标记7天已占用情况

void setTable(int i)
{
if(i==7)
{
printf("星期一 星期二 星期三 星期四 星期五 星期六 星期日 \n");
for(int k=0;k<7;++k)
{
printf("%s ",name[k]);
}
printf("\n");
return;
}
int k=0;
for(;k<p[i].cnDay;++k)
{
if(isEmpty[p[i].day[k]]==false)
{
isEmpty[p[i].day[k]]=true;
strcpy(name[p[i].day[k]],p[i].pName);
setTable(i+1);
isEmpty[p[i].day[k]]=false;
}
}
}

int main()
{
int day;
int count;
for(int i=0;i<7;++i)
{
printf("输入第%d个人的名字,然后依次输入每个人的繁忙日,输入0结束此人信息录入!\n",i+1);
count=0;
scanf("%s",p[i].pName);
scanf("%d",&day);
while(day!=0)
{
p[i].day[count]=day-1;
++count;
scanf("%d",&day);
}
p[i].cnDay=count;
}
setTable(0);
return 0;
}
算法2:
#include <stdio.h>

int n = 0;
int rest[7][7];

void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}

void perm(int list[], int k, int m)
{
int i;
int j;
if(k > m)
{
for (i=0; i<7; i++)
{
for (j=0; j<7; j++)
{
if (rest[i][j] == -1)
return;
if (rest[i][j] != list[i])
continue;
if (rest[i][j] == list[i])
break;
}
}

n++;
printf("Solution: %d\n", n);
printf("赵 钱 孙 李 周 吴 陈\n");
printf("=============================================================\n");
for(i = 0; i <= m; i++)
{
switch (list[i])
{
case 1: printf("星期一 ");
break;
case 2: printf("星期二 ");
break;
case 3: printf("星期三 ");
break;
case 4: printf("星期四 ");
break;
case 5: printf("星期五 ");
break;
case 6: printf("星期六 ");
break;
case 7: printf("星期日 ");
break;
default:
break;
}
}
printf("\n\n\n");
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
perm(list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}

int main()
{
int list[] = {1, 2, 3, 4, 5, 6, 7};
int i, j;
for(i = 0; i < 7; i++)
{
printf("Enter the day of %d people rests:\n", i+1);
for(j = 0; j < 7; j++)
{
scanf("%d", &rest[i][j]);
if(rest[i][j] == -1)
break;
}
}
printf("\n\n\n");
perm(list, 0, 6);
printf("total:%d\n", n);
getchar();
getchar();
return 0;
}

使用方法:首先输入每个人希望休息的日期,以-1结束。比如赵休息2,4,则输入:2回车4回车-1回车。输入完7人希望休息的日期后自动排班。
希望对你有所帮助。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
山东沃尔德集团集团所辖公司介绍 齐鲁银行无忧贷和市民贷哪个好 什么叫补按揭 后按揭贷款什么意思 买房者续按揭有什么危害 加按揭是什么意思 八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... ...钱、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人... 手机里的金山文档怎么用excel导出 ...1][720P高清][中英字幕]]种子下载,好人一生平安 明日方舟合成玉快速获取攻略 合成玉速刷技巧汇总-新手攻略-安族网... 源石碎片怎么换合成玉 《明日方舟》中怎么快速获取合成玉?详细攻略揭示高效积累资源的方式... 明日方舟合成玉怎么获得_明日方舟合成玉免费获取攻略 明日方舟快速获得合成玉 明日方舟合成玉一览 我是井冈山大学大一新生,生源地是河南。我想向大家咨询一下:我们学校... 有出嫁女儿在娘家过年的吗,注意什吗 ...我想让她在家过年,可是她说她丈夫家让她回去过年,她还是听他的!我... 春游唯美诗词有哪些(30句春游诗词) “薄暮还家空复吟”的出处是哪里 春游经典诗词大全(十首春游的诗词) 群殴好看的古代言情小说 耽美的不要 可以让人哭的那种 最好很虐_百... 找单机游戏,请大神推荐一些配置不超过真三国无双4的游戏,要好玩. 使命召唤5,三国无双4(免安装版)打开失败问题 使命召唤5 极品12 NBA2K9 孤岛危机2:弹头 侠盗4 真三国无双5 玩使命召唤4头很晕,真三国无双4也很晕,但是玩其他3D网游又不晕呢?_百... 帮忙加一下容错处理 求强攻弱受耽美文,现代古代穿越重生,网游奇幻灵异均可 朝鲜与韩国在未来时间里会大战么? 韩国朝鲜 关于朝韩局势的前前后后,如何开始,最新动态,及影响。拜谢。。。_百度知... 今天是8月29农历几号啊? 2012年10月14号是农历8月29日两个鼠结婚好不好? 高分请教,请教8月29号(农历7月初10)重新安床是否大吉?本人属鸡1957年2... 北京北大清华附近的旧书店或者书市? 女人抽烟的好处 南宁市青秀区5g网络怎么样? 犀牛脚镇交通 中国铁路南宁局集团有限公司南宁铁路工程建设指挥部怎么样? 广西奥巴龙网络科技有限公司怎么样? 广西文豪网络科技有限公司怎么样? 广西钦州市钦南区犀牛脚镇派出所早上几点上班 南宁智胤投资有限公司怎么样? 广西欢伯商贸有限公司怎么样? 卖房子的介绍方法 能不能装内置的胎压监测?