package 排日程;
import java.util.ArrayList;
import java.util.List;
public class 排日程 {
//先列举每个人所有的情况
static List list = new ArrayList();
static String[] str = new String[7];//保存所有情况的结果
public void createArray(){//初始化str
/**
* 即所有的结果如下
* 符合条件:所有人的连续工作日不能多于3天(注意:周日连到下周一也是连续)。
* 0,1,1,1,0,1,1
1,0,1,1,1,0,1
1,1,0,1,1,1,0
0,1,1,0,1,1,1
1,0,1,1,0,1,1
1,1,0,1,1,0,1
1,1,1,0,1,1,0
*/
for(int i = 0 ;i< 7 ;i++){
//i表示第一个休息日,为0休息,为1工作
StringBuffer sb = new StringBuffer();
int t = (i+4)%7;
//t表示第二个工作日.
for(int j = 0 ;j< 7;j++){
if(j==i || j==t){
sb.append(0);
}else{
sb.append(1);
}
}
str[i] = sb.toString();
}
}
public static void main(String[] args) {
排日程 t = new 排日程();
t.createArray();
for(int i = 0;i<5;i++){
list.add(null);
}
t.枚举(list,5);
}
//枚举所有的可能
private void 枚举(List list2, int n) {//从str