技术标签: 数据结构
问题及代码:
/*
* Copyright (c) 2016, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:Cube007.cpp
* 作 者:刘小楠
* 完成日期:2016年10月27日
*
* 问题描述:输入m和n,输出猴子离开圈子的顺序,从中也可以看出最后为大王是几号猴子。
* 输入描述:m,n
* 输出描述:猴子号码
*/
#include <stdio.h>
#define MaxSize 100
void king(int m,int n)
{
int p[MaxSize];
int i,j,t;
for (i=0; i<m; i++) //构建初始序列,记录m只猴子在p[0]~p[m-1]中
p[i]=i+1;
t=0; //首次报数的起始位置为0
printf("猴子号码顺序:");
for (i=m; i>=1; i--) //循环要执行m次,有m个猴子要出圈;共有i从m开始递减至1,i还表示在圈中猴子的数目
{
t=(t+n-1)%i; //从t开始数1,其后第n-1个将数到n,t加n-1用%i取余,目的是到达最后一个猴子可以折回去继续数
printf("%d ",p[t]); //编号为p[t]的元素出列
for (j=t+1; j<=i-1; j++)//后面的元素前移一个位置,删除了编号为p[t]的猴子
p[j-1]=p[j];
}
printf("\n");
}
int main()
{
int m,n;
scanf("%d %d", &m, &n);
king(m,n);
return 0;
}
知识点总结:
约瑟夫问题的数组解法。
学习心得:
约瑟夫问题是算法当中较为经典的问题,其中应该可分为三种,大一当中未懂的东西一定要抓好数据结构这个机会将这个漏洞补上。
起因于系统报表工具使用的RDLC,本地测试一直使用的纵向打印,未测试过横向打印????。甲方提供的打印机为HP1106,支持纵向打印,但!领导要求必须横向打印????,因此还拖延了实施进度????。先总结一下遇到的问题微软官方RDLC报表工具使用起来不太方便,也因单据复杂度而异。在遇到这个问题时上网搜索发现,一致认为此问题为BUG,在CS端可以解决,但是BS端未提供解决方案。...
一、打开Pycharm,找到File,打开。二、找到Settings打开三、打开之后会有个Project Interpreter选项,然后点击打开。右边有个小加号,就是添加库的。四、上面输入你想添加的库名,点击左下角Install Package即可安装,等待安装完会有提示...
1.yum搜索版本yum search java/grep jdk2.选择安装的版本yum install java-11-openjdk.x86_64开始下载资源命令行询问是否安装?输入 y 【yes的意思】继续下载及安装,直至下载安装完毕安装完毕后默认在/usr/lib/jvm这个地址查看安装完毕的版本3.配置环境变量及查看java版本及是否可用 javac配置环境变量:在 /etc/profile文件底部新增如下配置JAV.......
QTableWidget 是 Qt 提供的一种表格控件(如图 1 所示),类似于我们经常使用的 Excel 表格,可以将数据以表格的方式展示给用户。QTableWidget 的结构布局如图 1 所示。默认情况下,表格会显示表头,表头的内容为行号或列号。根据实际需要,我们可以将表头隐藏起来。QTableWidget 继承自 QTableView 类,QTableView 类也可以用来显示表格控件。
#include<stdio.h>int main(){ char c; int q=1; while((c=getchar())!=EOF) { if(c=='"')//找到引号 { printf("%s",q?"``":"''");//q=1上引号;q=0,下引 q=!q;//
Windows operating systems provides some mechanism to share the resources between different systems. One of the most known and popular tool to manage these resources is netcommand whit related sub com...
Bundle可能过put****()方法添加各种类型的数据,Intent也可以通过putExtras(Bundle)将数据添加进去,然后通过startActivity()跳到下一下Activity的时候就把数据也传到下一个Activity了。package com.intent;import android.app.Activity;import android.content.Inte
“The Edger8r tool ships as part of the Intel Software Guard Extensions SDK. It generates edge routines by reading a user-provided Enclave Description Language (EDL) file. These edge routines def...
create table tmp( name string, class tinyint, cooperator_name string, score tinyint)row format delimited fields terminated by '|';adf|3|测试公司1|45asdf|3|测试公司2|55cfe|2|测试公司2|743dd|3|测试公司5|nfda|1|测试公司7|80gds|2|测试公司9|92ffd|1|测试公司10|95dss
在C#中,Thread用的是比较多的,至少在windows form中使用是比较频繁的。一说到线程,可能马上就会想到界面和线程交互的头疼事,多线程之前数据共享,线程异步等等。这些当然是比较头疼的,只要有信心 ,慢慢来,相信理解不是难事。对于Thread中的join方法,主要是用来阻塞当前线程,等待子线程完成后再进行运行。也就是其实所谓的线程合并。比如说主线程派生了子线程,如果想让子线程完成之前
(A)指定文件查找function TForm1.findSpecFile(sDirectory,fName:string):boolean;var sr: TSearchRec ;begin if FindFirst(sDirectory+fName, faAnyFile, sr) = 0 then begin FindClose(sr); result:=true; end
1. MQ介绍1.1 为什么要用MQ消息队列是一种“先进先出”的数据结构其应用场景主要包含以下3个方面应用解耦系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。使用消息队列解耦合,系统的耦合性就会提高了。比如物流系统发生故障,需要几...