分治法——循环赛日程表

1、问题描述:
有n=2^k个远动员选手,设计比赛日程表实现:
(1)每个选手必须与n-1个选手比赛
(2)每个选手一天只比赛一场
(3)比赛共进行n-1天
输入:n人
输出:n行n-1列,第i行第j列表示第i个选手第j天遇到的对手,不包含第一列表示为选手编号

举例:2人
     1   2
     2   1

2、问题分析
通过化大为小,分而治之的思想,将多人的比赛日程缩小为2人的日程。以此倒推所有人的日程。
注意多人日程规律:
以四人为例:
1 2 | 3 4
2 1 | 4 3
----------
3 4 | 1 2
4 3 | 2 1
这样一个矩阵分为四个区,左上和右下一样,左下和右上一样,且右上是左上对应的数字加了n/2.

3、代码实现
 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 #define N 128
 5 int matrix[N][N] = {0};
 6 
 7 void fun(int n)
 8 {
 9     int i;
10     int j;
11     if (n<=0)
12     {
13         return;
14     }
15     if (n>2)
16     {
17         fun(n/2);
18         for (i=1;i<=n/2;i++)
19         {
20             for (j=n/2+1;j<=n;j++)
21             {
22                 matrix[i][j] = matrix[i][j-n/2] + n/2;
23             }
24         }
25         for (i=n/2+1;i<=n;i++)
26         {
27             for (j=1;j<=n/2;j++)
28             {
29                 matrix[i][j] = matrix[i-n/2][j+n/2];
30             }
31         }
32         for (i=n/2+1;i<=n;i++)
33         {
34             for (j=n/2+1;j<=n;j++)
35             {
36                 matrix[i][j] = matrix[i-n/2][j-n/2];
37             }
38         }
39     }
40     else
41     {
42         matrix[1][1] = 1;
43         matrix[1][2] = 2;
44         matrix[2][1] = 2;
45         matrix[2][2] = 1;
46     }
47 }
48 
49 void main()
50 {
51     fun(8);
52     
53     int i,j;
54     for (i=1;i<=8;i++)
55     {
56         for (j=1; j<=8; j++)
57         {
58             printf("%d ",matrix[i][j]);
59         }
60         printf("\n");
61     }
62 }

http://blog.chinaunix.net/uid-26874207-id-4206383.html?utm_source=jiancool

转载于:https://www.cnblogs.com/aabbcc/p/6508319.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 LSM-Tree 思想基于.NET 6.0 C# 写个 KV 数据库(案例版)

文章有点长&#xff0c;耐心看完应该可以懂实际原理到底是啥子。这是一个KV数据库的C#实现&#xff0c;目前用.NET 6.0实现的&#xff0c;目前算是属于雏形&#xff0c;骨架都已经完备&#xff0c;毕竟刚完工不到一星期。当然&#xff0c;这个其实也算是NoSQL的雏形&#xff0c…

35.使用拦截器实现权限验证

转自&#xff1a;https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 为了说明此问题&#xff0c;我们建立struts2auth项目&#xff0c;流程图如下&#xff1a; 简短说明&#xff1a;当我们访问main.jsp页面&#xff0c;并试图通过此页面中的链接地址&#xff1a;not…

如何保证缓存和数据库的一致性?

1. 问题分析 2. Cache-Aside 2.1 读缓存 2.2 写缓存 2.3 延迟双删 2.4 如何确保原子性 3. Read-Through/Write-Through 3.1 Read-Through 3.2 Write-Through 4. Write Behind 很多小伙伴在面试的时候&#xff0c;应该都遇到过类似的问题&#xff0c;如何确保缓存和数据库…

Pressed状态和clickable,duplicateParentState的关系

做Android开发的人都用过Selector,可以方便的实现View在不同状态下的背景。不过&#xff0c;相信大部分开发者遇到过和我一样的问题&#xff0c;本文会从源码角度&#xff0c;解释这些问题。 首先&#xff0c;这里简单描述一下&#xff0c;我遇到的问题&#xff1a; 界面上有个…

Hbase笔记4 java操作Hbase

暂无转载于:https://www.cnblogs.com/mrxiaohe/p/6512481.html

【招聘(南京)】 慧咨环球南京研发中心 .NET和Blazor 前端

主要的亮点快速增长的、产品导向型的全球性科技公司设计和开发市场领先的软件解决方案WLB — 工作生活相平衡澳洲排名前五的软件公司混合办公 — 3天在家办公&#xff0c;2天在办公室办公在C#和.NET开发&#xff0c;企业级系统研发&#xff0c;软件工程方面有长期的优秀实践和技…

用Python+Django在Eclipse环境下开发web网站【转】

一、创建一个项目如果这是你第一次使用Django&#xff0c;那么你必须进行一些初始设置。也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集&#xff0c;包含了数据库配置、Django详细选项设置和应用 特性配置&#xff0c;具体操作步骤如下所示。 1.新建Djan…

[转]数据结构KMP算法配图详解(超详细)

KMP算法配图详解 前言 KMP算法是我们数据结构串中最难也是最重要的算法。难是因为KMP算法的代码很优美简洁干练&#xff0c;但里面包含着非常深的思维。真正理解代码的人可以说对KMP算法的了解已经相当深入了。而且这个算法的不少东西的确不容易讲懂&#xff0c;很多正规的书本…

BGP-MED-2

BGP-MED-2如图&#xff1a;当AS100去往AS300的60、10的网络时&#xff0c;60走R3&#xff0c;10走R1!使用MED属性影响选路&#xff01; R2的配置 bgp 200peer 1.1.1.1 as-number 100 peer 1.1.1.1 ebgp-max-hop 255 peer 1.1.1.1 connect-interface LoopBack0peer 4.4.4.4 as-n…

WPF 实现 Gitee 气泡菜单(一)

WPF 实现 Gitee 气泡菜单&#xff08;一&#xff09;气泡菜单&#xff08;一&#xff09;作者&#xff1a;WPFDevelopersOrg原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;项目使用 MIT 开…

[转]LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

一、LVS简介 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&#xff0c;是由章文嵩博士主导的开源负载均衡项目&#xff0c;目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案&#xff0c;其体系结构如图1…

一张图看懂微软Power BI系列组件

一、Power BI简介 Power BI是微软最新的商业智能&#xff08;BI&#xff09;概念&#xff0c;它包含了一系列的组件和工具。话不多说&#xff0c;直接上图吧&#xff1a; Power BI的核心理念就是让我们用户不需要强大的技术背景&#xff0c;只需要掌握Excel这样简单的工具就能快…

互联网项目总结

2019独角兽企业重金招聘Python工程师标准>>> 从去年年底开始专门被分配到互联网小组做项目&#xff0c;一直想做个总结&#xff0c;但是苦于太贪玩。好吧&#xff0c;借着小组技术交流来一发。这里只对自己新学习的技术或者一些小技巧做简要概述&#xff0c;不做深究…

【ArcGIS微课1000例】0036:分式标注案例教程

【拓展阅读】:【ArcGIS Pro微课1000例】0015:ArcGIS Pro中属性字段分式标注案例教程 文章目录 1. 符号化2. 分式标注1. 符号化 右键数据图层→符号系统,打开符号系统对话框,住符号系统选择【唯一值】,字段1选择NAME。 唯一值标注效果: 2. 分式标注 双击打开图层属性,切…

【转】 ConstraintLayout 完全解析 快来优化你的布局吧

转自&#xff1a; http://blog.csdn.net/lmj623565791/article/details/78011599 本文出自张鸿洋的博客 一、概述 ConstraintLayout出现有一段时间了&#xff0c;不过一直没有特别去关注&#xff0c;也多多少少看了一些文字介绍&#xff0c;多数都是对使用可视化布局拖拽&#…

IoTDB 的C# 客户端发布 0.13.0.7

IoTDB C# Client 0.13.0.7 已经发布&#xff0c; 此版本更新的内容为笔者为Apache-IoTDB-Client-CSharp实现了Ado.Net的兼容层&#xff0c;降低了对IoTDB的使用门槛。于此同时&#xff0c; IoTSharp也开始支持了IoTDB的数据入库&#xff0c;随着晚些时候IoTSharp 2.7 版本的发布…

[转]Docker超详细基础教程,快速入门docker

一、docker概述 1.什么是docker Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟…

【Zookeeper】源码分析之服务器(一)

一、前言 前面已经介绍了Zookeeper中Leader选举的具体流程&#xff0c;接着来学习Zookeeper中的各种服务器。 二、总体框架图 对于服务器&#xff0c;其框架图如下图所示 说明&#xff1a; ZooKeeperServer&#xff0c;为所有服务器的父类&#xff0c;其请求处理链为PrepReques…

linux下配置samba服务器(以CentOS6.7为例)

一、简介&#xff08;百度百科&#xff09;Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件&#xff0c;由服务器及客户端程序构成。SMB&#xff08;Server Messages Block&#xff0c;信息服务块&#xff09;是一种在局域网上共享文件和打印机的一种通信协议&#xff0c…

【ArcGIS微课1000例】0037:上下标标注记案例教程

在利用ArcGIS进行制图时&#xff0c;进行标注(Label) 或注记(Annolation) 是必不可少的。但是除了常规的标注和注记以外&#xff0c;还时常需要一些特殊的标注或注记&#xff0c;比如上标、下标等。 文章目录一、上标标注方法二、下标标注方法一、上标标注方法 上下标代码模板…