作业帮 > 综合 > 作业

跪求。大哥大姐们,大家帮个忙,java实训作业,下面是题目,这个原本是C的题目。老师要让用java编出来

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/01 05:14:04
跪求。大哥大姐们,大家帮个忙,java实训作业,下面是题目,这个原本是C的题目。老师要让用java编出来
医院有A、B、C、D、E、F、G等7位大夫,
在一星期内(星期一至星期天)每人要轮流值班一天。
现在已知:
A大夫比C大夫晚一天值班;
D大夫比E大夫晚两天值班;
B大夫比G大夫早三天值班;
F大夫的值班日在B和C大夫的中间,且是星期四。
请确定每天究竟是哪位大夫值班?
分析:由题目可推出如下的已知条件:
F大夫是星期四值班;
B大夫值班的日期在星期一至星期三,且三天后是G大夫值班;
C大夫值班的日期是星期五和星期六,且一天后是A大夫值班;
E两天后是D大夫值班;E值班的日期只能在星期一至星期三。
在编程时用数组元素的下标1—7表示星期一到星期天,用数组元
素的值1—7分别表示A—F等7位大夫。
跪求。大哥大姐们,大家帮个忙,java实训作业,下面是题目,这个原本是C的题目。老师要让用java编出来
/>/**
 * 最笨的办法。遍历所有可能,然后找到符合条件的。
 */
public class DoctorsSchedule {

int[] ds = new int[7];
public static void main(String[] args) {
DoctorsSchedule a = new DoctorsSchedule();
a.loop();

}
String s = "";
int n  = 1;
public void loop(){
for (int i = 1; i <= 7; i++) {
if(s.indexOf(i+"")==-1){
s = s+i;
if(s.length()<7){
loop();
}else{
//组成一个7位切不重复的数
judge();
}
s = s.substring(0,s.length()-1);
}
}
}

public void judge(){
for (int j = 0; j < s.length(); j++) {
ds[j] = Integer.parseInt(s.substring(j,j+1));
}
if(ds[5] ==4){//F大夫是星期四。
if(ds[0]-ds[2]==1){//A大夫比C大夫晚一天值班;
if(ds[3]-ds[4]==2){//D大夫比E大夫晚两天值班;
if(ds[1]-ds[6]==3){//B大夫比G大夫早三天值班;
if((ds[5]>ds[1]&&ds[5]<ds[2])||(ds[5]<ds[1]&&ds[5]>ds[2])){//F大夫的值班日在B和C大夫的中间。
for (int j = 0; j < 7; j++) {
System.out.println(((char)('A'+j))+"大夫值班日是:星期"+ds[j]);
}
}
}
}
}
}
}

}