A. 需要c语言大神啊,,,,例如,宿舍排值日表,宿舍6个人住,星期六星期日不算,星期一到星期五轮流排值
#include<stdio.h>
int main()
{
int i,m,n=1;
for(i=1;i<=40;i++)
{
printf("第%d周:\n",i);
for(m=1;m<=5;m++)
{
printf("星期%d:%d号床值日\n",m,n);
n++;
if(n==7)
n=1;
}
}
return 0;
}
//40周的安排
B. C语言编程 值班安排
少年 说实话你这算法很繁琐!
透过现象看本质,这其实是个七元一次方程组或者n元n次方程组的求解问题。
(1)A大夫比C大夫晚1天值班; C-A=1
(2)D大夫比E大夫晚1天值班; E-D=1
(3)E大夫比B大夫早2天值班 B-E=2
(4)B大夫比G大夫早4天值班; G-B=4
(5)F大夫比B大夫晚1天值班; F-B=1
(6)F大夫比C大夫早1天值班; C-F=1
(7)F大夫星期四值班。 F=4
n个未知数n个方程,解出这n个值根据值的大小不就轻易排出了顺序!!!
且以上各个方程就能一眼看出各大夫值班的关系。
解出来ABCDEF为1234567中的一一对应的一个值,1+2+...+7=28,实际上那七个方程就可以组合出A+B+C+D+E+F=28
C. C语言课程设计-保安值班系统
这个像排列组合多点:
c:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
char*week[7]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
char*names[7]={"赵","钱","孙","李","周","吴","陈"};
intplan[7]={-1};
intplanNum=0;
voiddoPlan(intn,int*len,intaccept[7][3]){
if(n>6){
planNum++;
for(inti=0;i<n;++i){
printf("%s ",names[plan[i]]);
}
printf(" ");
}else{
for(inti=0;i<len[n];++i){
if(plan[accept[n][i]]>=0){
continue;
}
plan[accept[n][i]]=n;
doPlan(n+1,len,accept);
plan[accept[n][i]]=-1;
}
}
}
intmain(){
intlen[7]={2,2,2,1,3,2,3};//这里的数字对应accept[i]的长度
intaccept[7][3]={{2,4},{1,6},{0,3},{5},{1,4,6},{2,
5},{0,3,6}};
for(inti=0;i<7;i++){
printf("%s ",week[i]);
plan[i]=-1;
}
printf(" ");
doPlan(0,len,accept);
printf("总共%d个方案 ",planNum);
return0;
}