一个题目!
比如有一个数组, a[100],每隔两个删除一个, 到数组末尾再从头顺序再来,问最后一个被删除的是谁? --------------------编程问答-------------------- 作业请自己做。 --------------------编程问答-------------------- 做不了啊。。。。 --------------------编程问答-------------------- a[100] --------------------编程问答-------------------- 都是3的倍数,递归,每次去除3的倍数 --------------------编程问答-------------------- LZ你先结贴 我帮你做~! --------------------编程问答-------------------- protected void Page_Load(object sender, EventArgs e){
List<int> list = new List<int>();
for (int i = 1; i <= 100; i++)
{
list.Add(i);
}
Delete(list);
Response.Write(list[2].ToString());
}
private void Delete(List<int> list)
{
int index = 0;
int count = list.Count;
for (int i = 1; i <= count / 3; i++)
{
list.Remove(list[i * 3 - 1 - index]);
index++;
}
if (list.Count <= 3)
{
return;
}
Delete(list);
return;
}
输出95
思路是,不停删除被3整除的(index为2,5,8……的),删到数组只剩下3个时,第3个就是最后被删的
你的题目没说明第一个删不删,如果第一个删,把循环的i=1改成i=0 --------------------编程问答-------------------- 不对,第一个也删的话,要全部改,因为会删到一个不留
不过思路是一样的
--------------------编程问答--------------------
int[] arr = new int[100];
for (int i = 0; i < 100; i++)
{
arr[i] = i;
}
List<int> temList = arr.ToList();
int lenght = 100;
for (int i = 0; i < lenght; i++)
{
temList.RemoveAt(i);
lenght = lenght - 1;
i = i + 1;
}
int[] getArr = temList.ToArray();
这就是隔两个删除 --------------------编程问答-------------------- 口算的 是不是 最后删的是不是第一个数字啊? 也就是说1 ??? --------------------编程问答-------------------- 自己Google约瑟夫环算法。 --------------------编程问答-------------------- static void Main(string[] args)
{
List<int> list = new List<int>();
for (int i = 0; i < 100; i++)
{
list.Add(i);
}
GetLastList(list);
Console.WriteLine(list[0].ToString());
Console.ReadLine();
}
private static void GetLastList(List<int> list)
{
for (int i = 0; i < list.Count; i = i + 2)
{
list.RemoveAt(i);
}
if (list.Count != 1)
{
GetLastList(list);
}
} --------------------编程问答--------------------
可以 --------------------编程问答--------------------
补充:.NET技术 , C#