您的位置:首页 > 产品设计 > UI/UE

hdu 1216 Assistance Required

2012-11-07 13:04 274 查看
简单的模拟,用数组更简洁:

#include<stdio.h>

#define Max 40005

int n,num[3000];

struct point{

    
int x;

  int next;

}ar[Max];

int x;

int D(){

 int sum=0,t,k,h;

 h=x;

 t=ar[x].next;

 k=ar[x].x;

 x=ar[x].next;

 while(t!=-1){

        
sum++;

   if(sum==k){

    sum=0;

   
ar[h].next=ar[t].next;

   }

   h=t;

   t=ar[t].next;

 }

 return k;

}

int main(){

 int i,y;

 for(i=0;i<Max;i++){

  ar[i].x=i+2;

  ar[i].next=i+1;

 }

 ar[i-1].next=-1;

 x=0;

 y=1;

 while(scanf("%d",&n),n){

  if(n>=y){

   for(i=y;i<=n;i++)

   {

    num[i]=D();

   }

   y=i;

  }

  printf("%d\n",num
);

 }

 return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: