首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

小弟数学糟糕。肿么办

2013-03-27 
小弟数学不好。。。肿么办?孤岛上的N(16N32)个人一致通过以下方式减少生存人数:坐成一圈(位置记为0到N-1)并

小弟数学不好。。。肿么办?
孤岛上的N(16<N<32)个人一致通过以下方式减少生存人数:坐成一圈(位置记为0到N-1)并从第一个人开始报数,报到M(2<M<10)的人会被杀死,直到最后一个。为了生存下去,某人拿出了您设计好的这段程序,基于N和M两个参数计算出了最终存活的位置。
求大哥们帮个忙。。。。不帮就甭骂了。。我也是实在没办法才脸皮厚的这样,当初数学课不怎么上我错了。。
[解决办法]


private void button2_Click(object sender, EventArgs e)
        {
            int n = 20;  //N(16<N<32)
            int m = 5;  //M(2<M<10)
            string s = "";
            for (int i = 0; i < n; i++)
            {
                s += i.ToString() + ",";
            }
            string str = getCount2(s, m, n, n);
            MessageBox.Show(str);
        }

        private string getCount2(string s, int m, int n, int len)  //杀掉1个后下一个重新开始报数
        {
            if (16 < n && n < 32 && 2 < m && m < 10)
            {
            }
            else
            {
                return "N(16<N<32),M(2<M<10)";
            }
            bool bl = false;
            string ss = "";
            string s1 = "";
            string s2 = "";
            textBox1.Text += s + "\r\n";  //枪毙过程
            string[] list = s.Split(',');
            for (int i = 0; i < len; i++)
            {
                if (len < m)
                {
                    if (i + 1 == m % len)
                    {


                        bl = true;
                        continue;
                    }
                }
                if (i + 1 == m)
                {
                    bl = true;
                    continue;
                }
                if (bl)
                {
                    s1 += list[i] + ",";
                }
                else
                {
                    s2 += list[i] + ",";
                }
            }
            bl = false;
            ss = s1 + s2;
            if (len > 1)
            {
                ss = getCount2(ss, m, n, len - 1);
                return ss;
            }
            ss = ss.Remove(ss.LastIndexOf(","), 1);
            return ss;
        }


枪毙过程打印:
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,0,1,2,3,
10,11,12,13,14,15,16,17,18,19,0,1,2,3,5,6,7,8,
15,16,17,18,19,0,1,2,3,5,6,7,8,10,11,12,13,
0,1,2,3,5,6,7,8,10,11,12,13,15,16,17,18,
6,7,8,10,11,12,13,15,16,17,18,0,1,2,3,
12,13,15,16,17,18,0,1,2,3,6,7,8,10,
18,0,1,2,3,6,7,8,10,12,13,15,16,
6,7,8,10,12,13,15,16,18,0,1,2,
13,15,16,18,0,1,2,6,7,8,10,
1,2,6,7,8,10,13,15,16,18,
10,13,15,16,18,1,2,6,7,
1,2,6,7,10,13,15,16,
13,15,16,1,2,6,7,
6,7,13,15,16,1,
1,6,7,13,15,
1,6,7,13,
6,7,13,
13,6,
6,

热点排行