笔试遇到的问题,硬脆斯汀~~~,确实内有乾坤,但还是先做简单的实现吧~~~
有一个数组a[1000]存放0--1000;要求每隔二个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置(原来的数可能是无序的,另外数是否重复从题意无法确定)。
以8个数为例:
{0,1,2,3,4,5,6,7} 0-->1-->2(删除)-->3-->4-->5(删除)-->6-->7-->0(删除),如此循环直到最后一个数被删除。
#include<stdio.h>
#define MAX_VALUE 1000
int main()
{
int a[MAX_VALUE] = { 0 };
int next = 0, cur = 0, flag = 0,change_flag=0;
while (1)
{
int count = 0;
if (flag != 0)
{
cur = next;
next++;
if (next >= MAX_VALUE)
{
next = 0;
}
}
else
{
cur = 0;
flag = 1;
}
while (1)
{
if (a[next] == 0)
{
count++;
if (count == 3)
{
a[next] = 1;
printf("change a[%d] value to 1.\n", next);
change_flag++;
if (change_flag == MAX_VALUE)
{
printf("final value is %d\n",next);
system("pause");
return 0;
}
break;
}
}
next++;
if (next == MAX_VALUE)
{
next = 0;
}
}
}
}