小孩报数(链表和非链表两种方法),约赫夫数问题,真心废了好大功夫。。。
来源:互联网 发布:大淘客网站源码 编辑:程序博客网 时间:2024/04/28 12:33
Problem A
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)
Total Submission(s) : 13 Accepted Submission(s) : 6
Problem Description
有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。
Input
第一行输入小孩的人数N(N<=64)
接下来每行输入一个小孩的名字(人名不超过15个字符)
最后一行输入W,S (W < N),用逗号","间隔
接下来每行输入一个小孩的名字(人名不超过15个字符)
最后一行输入W,S (W < N),用逗号","间隔
Output
按人名输出小孩按顺序出列的顺序,每行输出一个人名
Sample Input
5XiaomingXiaohuaXiaowangZhangsanLisi2,3
Sample Output
ZhangsanXiaohuaXiaomingXiaowangLisi
AC代码(链表):
#include <stdio.h>
//#include <malloc.h> 出现了这个错误,F:\temp\12478026.73323\Main.cc:2:20: error: malloc.h: No such file or directory把该头文件注释了就好了,加上头文件#include<stdlib.h>就好了
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
struct LNode{
char data[16]; //这里用string data;([16],表示最多有16个字符)就不行!在VC里就通不过在DEV里能运行。在提交代码的时候也通不过,为啥?。。。
LNode *next;
};
void InitList_Sq(LNode *l) //创建线性表
{
int n,i,a,b,k;
char c;
LNode *p=NULL,*r=NULL,*m=NULL; //临时指针变量
scanf("%d",&n);
getchar();
r=l;
for(i=1;i<=n;i++)
{
p=(LNode*)malloc(sizeof(LNode));
cin>>p->data;
p->next=NULL; r->next=p; r=p;
}
r->next=l->next;
cin>>a>>c>>b;
for(i=1;i<a;i++)
l=l->next;
r=l;
if(b==1)
while(n)
{
r=r->next;
cout<<r->data<<endl;
n--;
}
else
while(n)
{
k=b-1;
while(k--)
{
r=r->next;
}
m=r->next;
cout<<m->data<<endl;
n--;
if(n==1){cout<<r->data<<endl;break;}
r->next=m->next;
}
}
int main()
{
LNode *l;
int e;
l=(LNode*)malloc(sizeof(LNode)); //头节点
l->next=NULL;
InitList_Sq(l);
return 0;
}
//#include <malloc.h> 出现了这个错误,F:\temp\12478026.73323\Main.cc:2:20: error: malloc.h: No such file or directory把该头文件注释了就好了,加上头文件#include<stdlib.h>就好了
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
struct LNode{
char data[16]; //这里用string data;([16],表示最多有16个字符)就不行!在VC里就通不过在DEV里能运行。在提交代码的时候也通不过,为啥?。。。
LNode *next;
};
void InitList_Sq(LNode *l) //创建线性表
{
int n,i,a,b,k;
char c;
LNode *p=NULL,*r=NULL,*m=NULL; //临时指针变量
scanf("%d",&n);
getchar();
r=l;
for(i=1;i<=n;i++)
{
p=(LNode*)malloc(sizeof(LNode));
cin>>p->data;
p->next=NULL; r->next=p; r=p;
}
r->next=l->next;
cin>>a>>c>>b;
for(i=1;i<a;i++)
l=l->next;
r=l;
if(b==1)
while(n)
{
r=r->next;
cout<<r->data<<endl;
n--;
}
else
while(n)
{
k=b-1;
while(k--)
{
r=r->next;
}
m=r->next;
cout<<m->data<<endl;
n--;
if(n==1){cout<<r->data<<endl;break;}
r->next=m->next;
}
}
int main()
{
LNode *l;
int e;
l=(LNode*)malloc(sizeof(LNode)); //头节点
l->next=NULL;
InitList_Sq(l);
return 0;
}
AC代码(非链表):
#include<iostream>
using namespace std;
#include<string.h>
int main()
{
int n,i,m,c,b,j;
char a[66][16],d;//之前还是对字符串用的不熟悉,对于输入多个字符串,可以将前面的那个[]当成是行(即多少个字符串),后面的那个当成是列(即字 符串的长度)
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
cin>>b>>d>>c;
strcpy(a[0],a[n]); //将a[n]复制给a[0];
for(i=b,m=0,j=0;;i++)
{
i=i%n; //对于让这列数形成一个环的话,就利用求余的方法,%他的总长度,将a[n]=a[0]就可以了!!!!!!
if(strcmp(a[i],"0")==0)continue; //对于该排除的数时,让之变为0,下次碰见0直接跳过就可以了
j++;
if(j==c)
{
cout<<a[i]<<endl;
strcpy(a[i],"0");
m++;
j=0;
if(m==n)break;
}
}
return 0;
}
using namespace std;
#include<string.h>
int main()
{
int n,i,m,c,b,j;
char a[66][16],d;//之前还是对字符串用的不熟悉,对于输入多个字符串,可以将前面的那个[]当成是行(即多少个字符串),后面的那个当成是列(即字 符串的长度)
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
cin>>b>>d>>c;
strcpy(a[0],a[n]); //将a[n]复制给a[0];
for(i=b,m=0,j=0;;i++)
{
i=i%n; //对于让这列数形成一个环的话,就利用求余的方法,%他的总长度,将a[n]=a[0]就可以了!!!!!!
if(strcmp(a[i],"0")==0)continue; //对于该排除的数时,让之变为0,下次碰见0直接跳过就可以了
j++;
if(j==c)
{
cout<<a[i]<<endl;
strcpy(a[i],"0");
m++;
j=0;
if(m==n)break;
}
}
return 0;
}
0 0
- 小孩报数(链表和非链表两种方法),约赫夫数问题,真心废了好大功夫。。。
- 小孩报数-约瑟夫问题数组链表
- 小孩报数问题(3750)
- poj 3750 小孩报数问题(循环链表)
- poj 3750 小孩报数问题(模拟)
- 小孩报数问题(模拟水题)
- 小孩报数问题
- poj3750 小孩报数问题
- 小孩报数问题
- 小孩报数问题
- 小孩报数问题3750
- 小孩报数问题
- 小孩报数问题
- poj3750 小孩报数问题
- 小孩报数问题
- 小孩报数问题
- POJ 3750 小孩报数问题
- pku-3750 小孩报数问题
- 利用NumPy快速的求价差及涨幅
- 四川凉山被遣返童工自称倒霉:打工总比受穷好
- POJ 2485 最小生成树
- CodeDOM 快速参考
- Starling第一步
- 小孩报数(链表和非链表两种方法),约赫夫数问题,真心废了好大功夫。。。
- TLS
- Hive配置运行及表的操作
- 弹出层 图片预览功能
- canvas学习2(click事件)
- Hibernate中的Session管理和对话实现
- hdu1181
- 素数距离问题
- Binary Options Trading Signals Live!