社区
数据结构与算法
帖子详情
几个面试题请教一下
zhaoxjpig
2004-12-17 11:45:21
1. 编写一个递归函数, 使之能输出下图所示结果:
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
2.设有n个人依次围成一圈, 从第1个人开始报数, 数到第m个人出列, 然后从出列的下一个人开始报数, 数到第m个人又出列, …, 如此反复到所有的人全部出列为止. 设n 个人的编号分别为1, 2, …, n, 打印出出列的顺序.
...全文
444
14
打赏
收藏
几个面试题请教一下
1. 编写一个递归函数, 使之能输出下图所示结果: 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 2.设有n个人依次围成一圈, 从第1个人开始报数, 数到第m个人出列, 然后从出列的下一个人开始报数, 数到第m个人又出列, …, 如此反复到所有的人全部出列为止. 设n 个人的编号分别为1, 2, …, n, 打印出出列的顺序.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
billazw
2005-04-23
打赏
举报
回复
什么公司出这样的题哟??
哈哈 晕了
penghongxia
2005-01-05
打赏
举报
回复
[第二道题目]
刚刚帮你写了一个,完全是凭兴趣,我这里没C编辑器,没调试,你自己去调试看看,应该没什么问题。
#include<stdio.h>
#define n 50;
main()
{
int i,j=0; //j 用来标志出列的数的个数
int a[n]; //n 个数用数组存放,其中a[0]没用
int m=3; //这里定m为3,你可以改成你要的数
int c=1; //C用来记a[i]的前面一个没出列的数值
a[0]=0;
do
for (i=1;i<=n;i++)
{if (a[i]<>0) //a[i]=0,说明该元素已经出列
{a[i]=c+1;
if(a[i]%m==0)
{a[i]=0; //出列的元素值用0来标志。
j++;
printf("%d\n",i);
}
else
c=a[i];
}
}
while(j<n) //j=n时,数列全部出列
}
Popo_CN
2005-01-05
打赏
举报
回复
/*一寺?有和尚一百,午?是一百个??,?人一个已立了?矩,雷打不?。某日??,一外来
云游和尚来??,寺主持既不想破寺内?矩,又不想破出家人允?化?的?矩,出招:全
部101个和尚排一大?圈,他?1然后向下一个方向?数,?到100者出列,取一??入?就餐,
?100的下一位(原第101)即从1?始第二??数。一百个百后肯定?剩一人,居然正是那
位云游和尚。?:初始?主持把他排在第几位?
*/
#include <stdio.h>
#define MAXCOUNT 100
#define COUNTNUM 100
struct node{
int num;
struct node *next;
};
int main(){
struct node *ph,*p1,*p2,*p3;
ph = p1 = p2 = p3 = (struct node *)malloc(sizeof(struct node));
int i;
int j = 1;
int k = 1;
/*create*/
for (i = 0;i < MAXCOUNT + 1;i++){
p1->num = i+1;
if(i != MAXCOUNT){
p2 = (struct node *)malloc(sizeof(struct node));
p2->next = NULL;
p1->next = p2;
p1 = p2;
}else{
p1->next = ph;
}
}
/*free*/
while(p3->next != p3){
if(j == COUNTNUM - 1){
struct node *pt;
j = 1;
pt = p3->next;
p3->next = p3->next->next;
p3 = p3->next;
printf("%d -->out No:%d\n",k,pt->num);
k++;
free(pt);
}else{
j++;
p3 = p3->next;
}
}
/*result*/
printf("The Result is No:%d\n",p3->num);
free(p3);
getchar();
return 0;
}
mxfeng
2005-01-04
打赏
举报
回复
。
dailiangren
2005-01-03
打赏
举报
回复
我解答的第一个,是用递推的想法解答的,但写起来好象是递归的形式。
我不大懂这些东西该怎么理解,期盼大家给我解疑。
# include<iostream.h>
void p(int n)
{
if(n==0) return;
for(int i=0;i<=n;i++)
cout<<" ";
for(int j=1;j<=5-n;j++)
cout<<j;
for(int k=6-n;k>=1;k--)
cout<<k;
cout<<endl;
p(n-1);
}
main()
{
p(5);
}
xiaosong8584
2004-12-21
打赏
举报
回复
up
aaalife
2004-12-20
打赏
举报
回复
晕死
这是面试题吗?考二级的都会唉~~~~~~
哪家公司,说来听听
:)
Oldman
2004-12-19
打赏
举报
回复
此C语言课本上去找吧
rickone
2004-12-19
打赏
举报
回复
第一个容易啊,用分治的思想,大问题分成若干个相似的小问题:
#include <stdio.h>
void mygraph(int n)
{
if(n==1)printf(" 1\n");
else
{
mygraph(n-1);
for(int i=1;i<=5-n;++i)printf(" ");
for(i=1;i<=n;++i)printf("%d",i);
for(i=n-1;i>0;--i)printf("%d",i);
printf("\n");
}//else
}//mygraph
void main()
{
mygraph(5);
}
aaasng
2004-12-19
打赏
举报
回复
第一个
#include <stdio.h>
int n = 0;
void foo(int j, int k)
{
int i;
if (k <= n)
{
for (i=0; i<j; i++)
printf(" ");
for (i=1; i<=k; i++)
printf("%d ", i);
for (i=k-1; i>=1; i--)
printf("%d ", i);
printf("\n");
foo(j-2, k+1);
}
}
void main()
{
scanf("%d", &n);
foo((n-1)*2, 1);
}
尹立
2004-12-18
打赏
举报
回复
第2个题目是以前学数据结构时做的第一个题目 用c语言写的 你看看吧~~
我刚刚写了注释~~要是看不懂 再告诉我
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
typedef struct Note{
int i;
int j;
struct Node *next;
}NODE;
void main()
{
int i,j,n,k,m,t;
NODE *head;
NODE *p,*q,*s;
scanf("%d",&n); //输入人的个数;
head=(NODE*)malloc(sizeof(NODE));//申请一个头接点;
if(head==NULL)
{ printf("The memory is not allocated!");
return ;
}
q=head;
for(i=1;i<=n;i++) //开始输入密码;
{
p=(NODE*)malloc(sizeof(NODE));
if(p==NULL) return;
scanf("%d",&j);
p->i=i; //把编号送给人
p->j=j; //把密码送给人
q->next=p; //建立链表
q=q->next;
}
head=head->next; //清除空的头指针;
q->next=head;
p=head;
m=p->j;
for(k=1;k<n;k++) //开始循环;
{
t=1;
while(t<m) //找到所需要的位置,并把这个接点删除;然后继续往下找;
{
t++;
p=p->next;
}
s=p->next;
p->next=s->next;
m=s->j;
printf("%4d\n",s->i);
free(s);
}
printf("The lastest monkey is %d\n",p->i); //这是留下的最后的一个接点;
}
jp1984
2004-12-18
打赏
举报
回复
第一个用递归还真不是很容易想。
第二个就不要说了,Josephus 。。构造法 或者 递归。。。
qrlvls
2004-12-17
打赏
举报
回复
作业吧?
lyjpenny
2004-12-17
打赏
举报
回复
既然是作业就不要拿上来问了,随便找个高手搞定算啦.
VUE的
几个
面试题
本文复习了VUE的
几个
面试题
,包括组件中data为何必须是函数、computed和watch的区别、组件首次加载触发的钩子函数、组件间通信方式,以及delete和vue.delete删除数组的区别,详细解答了各问题,助于了解VUE相关知识。
java string
几个
对象_JAVA
面试题
String产生了
几个
对象
本文围绕Java
面试题
‘String s = new String(\xyz\);产生
几个
对象’展开。通过代码示例和分析,介绍了Java字符串常量池的工作原理,解释了不同创建方式下字符串对象引用地址的差异,最终得出该语句会创建两个对象的结论。
Kotlin的
几个
面试题
作者分享了一次Kotlin面试经历,因回答不好Kotlin伴生对象、高阶函数、Java静态变量在Kotlin中的实现及Java死锁问题而错失机会。作者打算写Kotlin学习文章补充知识,还提醒大家面试前刷
面试题
,分享了这几道
面试题
供参考。
java面笔试_分享
几个
Java笔试
面试题
本文精选了
几个
典型的Java笔试
面试题
,包括求数列之和、判断正整数位数及逆序输出、求100之内的质数等,并提供了完整的解答思路与代码实现。
【吊打面试官系列-MySQL
面试题
】MySQL 有关权限的表都有哪
几个
?
博客分享了关于 MySQL 有关权限的表有哪
几个
的
面试题
,旨在为大家提供帮助,聚焦于 MySQL 数据库权限表相关的信息技术内容。
数据结构与算法
33,025
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章