poj 3750 小孩儿报数问题

来源:互联网 发布:睡大外女生知 编辑:程序博客网 时间:2024/05/01 10:24

题意:很清晰的约瑟夫,自己写了半天的循环链表一直WA,案例可以过,可能是没有处理好特殊情况,改了半天也是WA,无奈只有搜解题。。。

因为是昨天弄的,解题报告的地址找不到了,要是在百度搜,应该也可以找到。狠狠鄙视,鄙视自己的链表!我看他这种方法非常好,有种打表的感觉,不忍独享,还是贴出来了。

#include<iostream>using namespace std;struct node {    char name[20];    node *next;    };int main() {    node a[65];    int n , w , s;    scanf("%d",&n);    for (int i = 0 ; i < n ; i ++) {        scanf("%s",a[i].name);        a[i].next = (i==n-1)?&a[0]:&a[i+1];//有种打表的感觉呢      }                                      //把所有的名字都连接形成循环链表     scanf("%d,%d",&w,&s);    node *p;    p = w>=2? &a[w-2]:&a[n-1];//从第一个人找要单独处理下     int j = 0;    while(p&&n>0) {        j ++;        if (j == s) {            printf("%s\n",p->next->name);            j = 0;            p->next = p->next->next;//删除操作             n --;                }        else        p = p->next;  //向后查找         }}