第1个回答 2013-12-09
#include<stdio.h>
int main()
{
int maxn = 100;
int a[maxn];
memset(a, 0, sizeof(a));
int N=17, M = 3;
int count = 1;
int rest = N, j, i;
for (i = 0; i < N; i = (i + 1) % N)
{
if (a[i] == 0)
{
if (count == M)
{
a[i] = 1;
printf("%d ", i+1);
rest--;
if (rest == 0)
break;
count = 1;
}
else
count++;
}
}
}
第3个回答 2013-12-09
讲一下基本思路,
定义一个数组,先全部归零。
然后处理,当零的时候没有退出,1的时候推出知道推出到最后一个
核心代码
int a[1000], n, i, num=1, index=0,flag=1;
scanf("%d", &n);
memset(a, 0, sizeof(a));
while(num!=n+1)
{
if(index[i]==0)
else
{
if(flag==3) {a[index]=num;flag=0; num++;}
else flag++;
}
index++;index%=n;
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<n;j++)
if(a[j]==i) printf("%d ", j);
}
printf("\n")本回答被提问者和网友采纳