博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
幸运儿
阅读量:5085 次
发布时间:2019-06-13

本文共 1575 字,大约阅读时间需要 5 分钟。

用链表做的,其实不用链表可以做,主要是想练习一下链表的使用。

题目:

description

n 个人围成一圈, 并依次编号1~n,。从编号为1 的人开始,按顺时针方向每隔一人选出一个,剩下的人重新围成一圈,如此循环直到剩下两人,这剩下的两人就是幸运儿。如果你想成为最后两个幸运儿,请问开始时应该站在什么位置?(设3<=n<=50)

input

有多个测试序列。每行是开始时的人数n

output

第1 行是选出顺序,第2 行是两名幸运儿的开始位置(按升序排列),位置编号之间用一个空格分开。

sample input

12

20

45

samlpe output

2 4 6 8 10 12 3 7 11 5

1 9
2 4 6 8 10 12 14 16 18 20 3 7 11 15 19 5 13 9
1 17
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 3 7 11 15 19 23 27 31 35 39 43 5 13 21 29 37 45 9 25 41 17
1 33

代码:

#include
#include
using namespace std;typedef struct node{ int data; struct node *next;}LNode,*LinkList;int main(){ int n,i; int a[50]; while(cin>>n){ LinkList s,p,head; head=(LinkList) malloc(sizeof(LNode)); s=head; s->next=NULL; for(i=1;i<=n;i++) { p=(LinkList)malloc(sizeof(LNode)); p->data=i; s->next=p; if(i==1) head->next=p; p->next=NULL; s=p; } s=head; p=s->next; i=1; int k=0; while(head->next->next->next!=NULL) { if(p==NULL) { s=head; p=s->next; i=1; } if(i==2){ a[k++]=p->data; p=p->next; s->next=p; i=1; } else if(p!=NULL){ s=p; p=p->next; i++; } } cout<
next; cout<
data<<' '<
next->data<

 

转载于:https://www.cnblogs.com/wuyanjun/archive/2013/05/12/3073754.html

你可能感兴趣的文章
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>
数据库链路创建方法
查看>>
Enterprise Library - Data Access Application Block 6.0.1304
查看>>
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>