双向链表一共7个孩子,从1号孩子开始顺时针数数, * 每个孩子数一个数,遇到7的倍数或数字中含有7,则该孩子不出声,只拍一下手, * 数数的方向逆转,下一个孩子数下一个数字,求100是哪个孩子数的
2014-03-30 17:23
381 查看
package com.zhangle.arithmetic;
/**
* 一共7个孩子,从1号孩子开始顺时针数数,
* 每个孩子数一个数,遇到7的倍数或数字中含有7,则该孩子不出声,只拍一下手,
* 数数的方向逆转,下一个孩子数下一个数字,求第100是哪个孩子数的
* @author lenovo
*
*/
public class TwoWayLinklist {
private int data;
private TwoWayLinklist next;
private TwoWayLinklist pre;
public TwoWayLinklist(int x){
data=x;
}
public void append(TwoWayLinklist x) {
TwoWayLinklist p=this;
while (p.next!=null) {
p=p.next;
}
p.next=x;
}
public void appendPre(TwoWayLinklist x){
TwoWayLinklist p=this;
while (p.pre!=null) {
p=p.pre;
}
p.pre=x;
}
public static void main(String[] args) {
int No=1;//第几号人
int i=1;//数的数字
TwoWayLinklist t1=new TwoWayLinklist(i);
while (i<=100) {
i++;
if (i%7!=0) {
if ((i/7)%2==0) {//偶数向下走
t1.append(new TwoWayLinklist(i));
}
else {//奇数向前走
t1.appendPre(new TwoWayLinklist(i));
}
if (i==100) {
while (t1.next!=null) {
No++;
t1=t1.next;
}
while (t1.pre!=null) {
No++;
t1=t1.pre;
}
System.out.println("第"+No+"号小朋友数的100");
break;
}
}
else {
i++;
t1=new TwoWayLinklist(i);//7的整数倍清空一次
}
}
}
}
/**
* 一共7个孩子,从1号孩子开始顺时针数数,
* 每个孩子数一个数,遇到7的倍数或数字中含有7,则该孩子不出声,只拍一下手,
* 数数的方向逆转,下一个孩子数下一个数字,求第100是哪个孩子数的
* @author lenovo
*
*/
public class TwoWayLinklist {
private int data;
private TwoWayLinklist next;
private TwoWayLinklist pre;
public TwoWayLinklist(int x){
data=x;
}
public void append(TwoWayLinklist x) {
TwoWayLinklist p=this;
while (p.next!=null) {
p=p.next;
}
p.next=x;
}
public void appendPre(TwoWayLinklist x){
TwoWayLinklist p=this;
while (p.pre!=null) {
p=p.pre;
}
p.pre=x;
}
public static void main(String[] args) {
int No=1;//第几号人
int i=1;//数的数字
TwoWayLinklist t1=new TwoWayLinklist(i);
while (i<=100) {
i++;
if (i%7!=0) {
if ((i/7)%2==0) {//偶数向下走
t1.append(new TwoWayLinklist(i));
}
else {//奇数向前走
t1.appendPre(new TwoWayLinklist(i));
}
if (i==100) {
while (t1.next!=null) {
No++;
t1=t1.next;
}
while (t1.pre!=null) {
No++;
t1=t1.pre;
}
System.out.println("第"+No+"号小朋友数的100");
break;
}
}
else {
i++;
t1=new TwoWayLinklist(i);//7的整数倍清空一次
}
}
}
}
相关文章推荐
- 双向循环链表经典案例,20孩子报数,7的倍数或数字中含有7,不出声,数数的方向逆转
- 【微软100题】n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。 当一个数字删除后,从被删除数
- 报数游戏 有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数, 直到最后剩下一个孩子为止。问剩下第几个孩子。
- 拍七游戏 许多人都曾经玩过“拍七”游戏。 规则是:大家依次从1开始顺序数数,数到含有7或7的倍数的要拍手或其它规定的方式表示越过 (比如:7,14,17等都不能数出),下一人继续数下面的数
- java 报数游戏:有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到m的人出列
- n个人,两成一个圈,编号从0到n-1 .从0开始数,遇到3或者3的倍数,那么就删除这个数,从下一个从新开始数,最后剩下的数的编号。
- 有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。
- 总结一下面试中遇到的问题,一共面试了4家公司。
- 从1-100中隔5个数去掉一个数,最后去掉的哪个数(如果数过一遍了从前端接着开始)?
- n个人围成一圈,1,2,3;开始数数,数到3退出,求最后一个输出的数字
- 输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
- 从今天开始记录一下每天学到的Android知识、以及开发中遇到的问题
- 今天开始学习LNMP,遇到问题记录一下~!
- 输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
- 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。
- n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m
- C语言用数组1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈;下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序。 考虑问实现约瑟夫环问题
- C#基础-018 找出100以内是7的倍数或者含有7的整数
- 要求输出从1到1000范围内所有与7相关数字的个数,与7相关的数字定义为,是7的倍数或者数字中含有7,比如17和71均含有‘7’。
- 【转】写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”