当前位置:首页 » 编程软件 » 小猴编程密码

小猴编程密码

发布时间: 2023-06-04 01:57:24

㈠ c++编程猴子选大王 猴子按1…、n编号顺时针方向围坐一圈,从第1号开始按1、…m报数,凡报到m号的退出圈外

p=q是改变头结点,让新插入的处于链表头 如果忽略头Head->next = head就是单链表了

㈡ 用C++编程 猴子选大王

#include <iostream>
using namespace std;
template <class datatype> class LinkList;

template <class datatype>
class Node
{
friend class LinkList<datatype>;//友元类
private:
datatype data;//计猴子号
Node<datatype> *next;
};

template <class datatype>
class LinkList
{
public:
LinkList();
void monkey(int m); //建立有m个元素的单链表
datatype Get(int a); //取单链表中第i个结点的元素值
datatype Delete(int n); //在单链表中删除第n个结点
private:
Node<datatype> *head,*tail; //单链表的结构指针
};

template <class datatype>
LinkList<datatype>:: LinkList( )
{head=new Node<datatype>; head->next=NULL;}

template <class datatype>
void LinkList<datatype>::monkey(int m)
{
int i;//整型变量i,用于计数
Node<datatype> *p,*q;//声明结构指针
p=new Node<datatype>;//为p分配空间
p->data=1; //初始化p结点data域为1
p->next=NULL;//初始化p结点next域为空
head=p;//链表头指针head赋值为p
q=p; //q赋值为p
for (i=2; i<=m; i++) //用循环结构构造链表
{
p=new Node<datatype>;//为p配内存空间
p->data=i; //初始化p结点data域为i,表示猴子号
q->next=p; //将p点加到链表尾部
q=p; //让指向链表尾部结点
p->next=NULL; //链表尾部为空
}
tail=q;//链表尾
tail->next=head;//链表尾部指向链表头,形成循环链表
}

template <class datatype>
datatype LinkList<datatype>::Delete(int n)
{
Node<datatype> *p,*q;
int j=0;
q=tail; //指向循环链表尾部
cout<<"被删除的猴子号码依次为:"<<endl;
while (q!=q->next) //剩余结点数不为1,则继续循环
{
p=q->next;//p赋值给下一个相邻结点
j++;
if(j%n==0)
{
cout<<p->data<<ends;
q->next=p->next;//删除此结点
delete p;//释放空间
p=NULL;
}
else q=p;//q指向相邻的下一个结点p
}
cout<<endl;
head=q;//head指向结点q,q为链表中剩余的一个结点
return head->data;
}

template <class datatype>
datatype LinkList<datatype>::Get(int a)
{
Node<datatype> *p;
int j;//计数器
p=head->next; j=1; //或p=head; j=0;
while (p && j<a)
{
p=p->next; //工作指针p后移
j++;
}
if (!p) throw "a值不合法";
else return p->data;
}

void main()
{
int m,n;
LinkList<int>mon;
cout<<"请输入猴子的总数:"<<endl;
cin>>m;
cout<<"请输入要删除猴子的所报的数:"<<endl;
cin>>n;
mon.monkey(m);
mon.Delete(n);
cout<<"猴王是:"<<mon.Get(1)<<"号"<<endl;
}

㈢ 猴子捞月,c语言编程

#include"stdio.h"
#include"conio.h"
#definemax30001
main()
{
inti,k,m,n,num[max],*p,h,count,c;
FILE*fp;
fp=fopen("LeftQueue.txt","w+");
printf("1Pleaseinputthetotalnumber(beginwithno.1)");
scanf("%d",&n);
printf("");
scanf("%d",&count);
printf("");
scanf("%d",&c);
fprintf(fp,"编号从1到%d,报%d者出列,每列存放%d个数据。 出列顺序如下: ",n,count,c);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+1;
i=0;
k=0;
m=0;
h=0;
while(m<n-1)
{
if(*(p+i)!=0)k++;
if(k==count)
{
fprintf(fp,"%7d",*(p+i));
*(p+i)=0;
k=0;
m++;
h++;
if(h%c==0)fprintf(fp," ");
}
i++;
if(i==n)i=0;
}
while(*p==0)p++;
printf(" 1%disleft.%dnumberleftthequeue.",*p,h);
fprintf(fp," 最后留下的数为:%d;共%d个数离开。",*p,h);
fclose(fp);
getch();
}

㈣ c语言编程解决小猴爬山

上山下山应该是一样的,都是让电脑一个值一个值去判断。我的想法是让电脑先判断出所有可能的组合,比如2+3+5和3+2+5是一个概念,然后建立一个排列组合的函数,对组合进一步处理。上山为例:
#include<stdio.h>
intjc(inta)//阶乘
{
inti,j=1;
for(i=a;i>0;i--)
{
j=j*i;
}
returnj;
}
intmain(intargc,char*argv[])
{
intn;//方法数
constintt=50;//台阶数
inti,j,k;

for(i=0;i<=25;i++)//2*25=50
for(j=0;j<17;j++)//3*16=48
for(k=0;k<13;k++)//4*12=28
{
if(2*i+3*j+4*k==t)//两步、三步或四步
{
n=n+jc(i+j+k)/(jc(i)*jc(k)*jc(j));
}
}
printf("上山总数为:%d种 ",n);
return0;
}

这个程序计算出来上山有3731种

热点内容
python量化投资入门 发布:2025-02-12 15:34:17 浏览:174
苹果的天气跟安卓的天气哪个准 发布:2025-02-12 15:33:37 浏览:313
西安分布式存储咨询 发布:2025-02-12 15:33:24 浏览:179
我的世界服务器怎么获得32k乱码棒 发布:2025-02-12 15:25:15 浏览:545
hadoopftp 发布:2025-02-12 15:22:23 浏览:753
ftp怎么增加 发布:2025-02-12 15:21:08 浏览:379
改装车载中控什么配置 发布:2025-02-12 15:10:00 浏览:861
数据库体系结构 发布:2025-02-12 15:09:48 浏览:692
小米账号为什么设置不了密码 发布:2025-02-12 15:03:57 浏览:264
android访问网络权限 发布:2025-02-12 14:55:20 浏览:89