太简单了。google去吧。一个著名的数学问题。

解决方案 »

  1.   

    if(today is 周三 || today is 周四  ||  today is 周五)
      {
         if(one take a rest)
           {
                rest's day++;
            }
       }
    if(one's rest's day > 3)
      {
         he can't take a rest this month;
      }
    算法也就差不多这样。
      

  2.   

    四个都错开:
       类中加个静态变量K,当一个对象休息了,则加为一,K为一则其它对象今天就不能休息,过一天就把K减一。这样就可错开。
    而且相差要6天:
       对象休息一天则要个变量Y来记录加一,之后每隔一天加一,Y<6时不能再休息。当Y>=6时可休息,执行休息后将Y置0,这样可以吧。
      

  3.   

    private void button1_Click_1(object sender, System.EventArgs e)
    {
    fj("2004-4-1");
    } private void fj(string mdate)
    {
    System.DayOfWeek dow;
    string[] name={"a","b","c","d"};
    int[] namecount={0,0,0,0};
    int i=0;
    DateTime dt;
    int month;
    try
    {
    dt=Convert.ToDateTime(mdate);
    month=dt.Month;
    }
    catch
    {
    return;
    }
    do
    {
    dow=dt.DayOfWeek;
    if(dow==DayOfWeek.Wednesday || dow==DayOfWeek.Thursday || dow==DayOfWeek.Friday)
    {
    if(namecount[i]<3) 
    {
    listBox1.Items.Add(name[i]+"*"+ dt.ToShortDateString());
    namecount[i]++;
    }
    if(++i>3) i=0;
    }
    dt=dt.AddDays(1);
    }while(dt.Month==month);
    }
      

  4.   

    我知道了,你是对单位的人员进行管理吧。这觉得 chenyuming2004(一切从2004开始) 的思路,如果用数据库来做的话,可以更加合适你。