算法设计与分析——递归与分治策略——循环日程赛

问题描述:

在这里插入图片描述

非递归方案一:代码

#include<bits/stdc++.h>
using namespace std;void gameTable(vector<vector<int>> &vec,int k)
{int i=0,j=0;//二维数组的下标,行,列 int temp;//需要新安排选手数目 int n;//当前的选手数目 //先初始化一个两人的比赛表n=2; //k=1两个参赛选手日程可以直接求得vec[1][1]=1;vec[1][2]=2;vec[2][1]=2;vec[2][2]=1;//关键的大循环 for(int x=1;x<k;x++)//安排2^x个选手的日程表 {temp=n;//多了temp个选手  已建立了temp个选手的表 n*=2;//目前选手的数量//安排左下角的比赛日程 for(i=temp+1;i<=n;i++)//左下角的行 {for(j=1;j<=temp;j++)//左下角的列 vec[i][j]=vec[i-temp][j]+temp;//同一列的第i-temp行(从上到下依次对应)的值加上新增数temp  }//安排右上角的比赛日程 for(i=1;i<=temp;i++)//右上角的行 {for(j=temp+1;j<=n;j++)//右上角的列 vec[i][j]=vec[i+temp][j-temp];}//安排右下角的比赛日程 for(i=temp+1;i<=n;i++)//右下角的行 {for(j=temp+1;j<=n;j++)//右下角的列 vec[i][j]=vec[i-temp][j-temp];} } cout<<"(第i行第j列表示和第i个选手在第j天比赛的选手序号)"<<endl;for(i=1;i<=n;i++)//画表 {for(j=1;j<=n;j++){cout<<setw(3)<<vec[i][j];}cout<<endl;}}int main()
{cout<<"比赛选手个数为n(n=2^k),请输入参数K(K>0):";int k;cin>>k;int num=1;for(int i=0;i<k;i++){num*=2;}//stl的二维的vector需要初始化后才可以使用 vector<vector<int>> vec(num+1, vector<int>(num+1));gameTable(vec,k);return 0; } 

for(int x=1;x<k;x++)//安排2^x个选手的日程表
//stl的二维的vector需要初始化后才可以使用
vector<vector> vec(num+1, vector(num+1));

在这里插入图片描述
在这里插入图片描述
方案二:使用递归来解决

#include<bits/stdc++.h>
using namespace std;void Copy(int **a,int cow,int col,int cow2,int col2,int k)
{for(int i=0;i<k;i++){for(int j=0;j<k;j++){a[cow2+i][col2+j]=a[cow+i][col+j];}}
}
void table(int **a,int cow,int col,int k)//k为参加比赛的总人数 
{if(k==1)return ;else{//填充左上角的比赛进程table(a,cow,col,k/2); //填充左下角的比赛进程table(a,cow+k/2,col,k/2); //将左下角的信息复制到右上角的比赛进程Copy(a,cow+k/2,col,cow,col+k/2,k/2);//将左上角的信息复制到右下角的比赛进程 Copy(a,cow,col,cow+k/2,col+k/2,k/2);}
} int main()
{int k;cout<<"输入k(n=2^k):";cin>>k;int num=1;for(int i=0;i<k;i++){num=num*2;}//输入运动员的人数int ** p =new int*[num];//赛程表初始化for (int i = 0; i < num; i++){p[i] = new int[num];p[0][i] = i+1;p[i][0] = i+1;}//运行函数table(p,0,0,num);//输出结果cout<<"循环赛日程表(递归法):"<<endl;for(int i=0;i<num;i++){for(int j=0;j<num;j++){cout<<setw(3)<<p[i][j];}cout<<endl;}return 0;
}

动态开辟空间
int *p = new int[m]; //开辟行
for(int i = 0; i < m; i++)
p[i] = new int[n]; //开辟列

在这里插入图片描述

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

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

相关文章

linux开发板推荐_【新品发布】WiFi开发板XW-01-Kit,超低功耗,冷启快联,智能门锁首选!...

智能门锁作为智能家居的入口级产品以及家庭智能安防的核心单品&#xff0c;已然成为智能家居生态链中不可或缺的核心组成部分。智能门锁方案的研发仍然面临着诸多痛点&#xff0c;如耗电问题、连接繁琐和安全隐患等。物联网的应用与发展必然离不开对更低功耗的追求&#xff0c;…

如何使用 C# 扩展方法

译文链接&#xff1a;https://www.infoworld.com/article/3130492/how-to-work-with-extension-methods-in-c.htmlC# 在 3.0 版本中提供了对 扩展方法 的支持&#xff0c;扩展方法常用于给一个已存在的类添加新的方法从而扩展该类的功能&#xff0c;最关键的是&#xff1a;你不…

算法设计与分析——递归与分治策略——最接近点对问题

【问题描述】 最近对问题要求在包含有n个点的集合S中&#xff0c;找出距离最近的两个点。设 p1(x1,y1)&#xff0c;p2(x2,y2)&#xff0c;……&#xff0c;pn(xn,yn)是平面的n个点。 严格地将&#xff0c;最近点对可能不止一对&#xff0c;此例输出一对即可。 【基本算法思想…

Visual Studio 即时窗口实用技巧

在 Visual Studio 中有一个窗口叫 Immediate 窗口&#xff0c;中文版本应该叫即时窗口。默认会在你启动调试时在 VS 编辑器中弹出来。你也可以通过 Debug|Windows|Immediate 或者使用快捷键 CtrlAltI 手动把它调出来。这个窗口很实用&#xff0c;尤其是在调试的时候。下面总结几…

怎么判断再一个局域网内一个ip被两台机器占用_交换机与 VLAN 到底是怎么来的...

最近有几个学生粉丝后台私信我&#xff0c;让我说说交换机与 VLAN。我在阅读这几个粉丝私信中发现一个有趣的现象&#xff0c;那就是吐槽大学计算机网络课程的晦涩枯燥&#xff0c;而不是去深层次解释协议出现的原因或者用来去解决什么问题。帅天今天就和大家聊聊交换机与 VLAN…

移动建模平台元数据存储架构演进

源宝导读&#xff1a;明源云天际-移动建模平台是一个快速生成多端移动应用的PaaS平台&#xff0c;元数据是移动应用设计与运行的核心数据结构&#xff0c;本文将从元数据存储这个视角分享我们的技术思考与实践。一、什么是元数据&#xff08;Metadata&#xff09;&#xff1f;这…

浅谈AsyncLocal,我们应该知道的那些事儿

【导读】最近查看有关框架源码&#xff0c;发现AsyncLocal这玩意水还挺深&#xff0c;于是花了一点功夫去研究&#xff0c;同时对比ThreadLocal说明二者区别以及在何时场景下使用AsyncLocal或ThreadLocalThreadLocal相信很多童鞋用过&#xff0c;但AsyncLocal具体使用包括我在内…

算法设计与分析——动态规划——数字三角形问题

数字三角形问题 1.题目描述&#xff1a;给定一个由n行数字组成的数字三角形&#xff0c;如图3-7所示。设计一个算法&#xff0c;计算出从三角形的顶至底的一条路径&#xff0c;使该路径经过的数字总和最大。 算法设计:对于给定的由n行数字组成的数字三角形&#xff0c;计算从三…

如何在 Asp.Net Core MVC 中处理 null 值

译文链接&#xff1a;https://www.infoworld.com/article/3434624/how-to-handle-null-values-in-aspnet-core-mvc.html传统的 asp.net mvc 对应着 .netcore 中的 asp.net core mvc&#xff0c;可以利用 asp.net core mvc 去构建跨平台&#xff0c;可扩展&#xff0c;高性能的w…

算法设计与分析——动态规划——最长公共子序列

#include<iostream> #include<stdio.h> #include<string.h> #include<bits/stdc.h> #define MAXLEN 50 using namespace std;void LCSlength(int m,int n,char *x,char *y,int c[][MAXLEN],int b[][MAXLEN]) {for(int i0;i<m;i)//m为字符个数 {c[i]…

程序员过关斩将--论系统设计的高可扩展性

“此文仅仅代表个人意见&#xff0c;并非行业标准“MQ是万能的高扩展方式&#xff1f;“面向接口是万能的高扩展方式&#xff1f;说到系统设计的三高&#xff0c;每一高都是一个很庞大的话题&#xff0c;甚至可以用一本书甚至N本书来详细阐述。其中高可扩展性是系统架构的众多目…

Docker Vs Podman

翻译自 Chetansingh 2020年4月24日的博文《Docker Vs Podman》 [1]容器化的一场全新革命是从 Docker 开始的&#xff0c;Docker 的守护进程管理着所有的事情&#xff0c;并成为最受欢迎和广泛使用的容器管理系统之一。但是&#xff0c;请稍等&#xff01;您真的会假设 Docker 是…

算法设计与分析——动态规划——01背包问题

#include<iostream> #include<iomanip> using namespace std; //前i个物品装入容量为j的背包中获得的最大价值//0-1背包动态规划算法 构造二维表 int knapsack_problem( int n,int *weight,int *value,int capacity,int **m,int *flag) {for(int i0;i<capaci…

让 CefSharp.WinForms 应用程序同时支持32位(x86)和64位(x64)的解决方案

当我们为基于 .NET Framework 的 WinForm 程序增加 CefSharp.WinForms 依赖后&#xff0c;可能会遇到以下报错信息&#xff1a;CefSharp.Common is unable to proceeed as your current Platform is ‘AnyCPU’. To target AnyCPU please read https://github.com/cefsharp/Cef…

算法设计与分析——贪心算法——活动安排问题

问题描述&#xff1a;设有n个活动的集合E{1,2,…,n}&#xff0c;其中每个活动都要求使用同一资源&#xff0c;如演讲会场等&#xff0c;而在同一时间内只有一个活动能使用这一资源。 每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si<fi 。 如果选择了活动…

c语言——刷新控制台界面与返回上一级

#include<iostream> #include<stdlib.h> using namespace std;int main() {while(1){system("cls");//刷新控制台程序界面 cout<<"请输入1&#xff1a;进入下一级程序A:"<<endl;cout<<"请输入2&#xff1a;进入下一级程…

C# :异步编程的注意点

在上一篇《C#&#xff1a;异步编程中的 async 和 await》 中简单介绍了在 C# 中的异步编程以及 async 和 await 编程模型&#xff0c;本文介绍下异步编程的注意事项&#xff0c;主要有以下几个方面。同步中调用异步在同步代码中调用异步代码&#xff0c;容易导致死锁&#xff0…

makefile 打印变量_[Makefile] 缩进与空格--记录踩过的坑

今天折腾了好久&#xff0c;就为了debug两个makefile的bug。虽然最后找到原因了&#xff0c;但是&#xff0c;怎么说呢&#xff0c;用现在流行的话来说&#xff0c;实在是意难平啊&#xff01;必须写一篇记录一下&#xff01;第一个问题&#xff0c;是个语法高亮问题。今天观察…

算法设计与分析——贪心算法——背包问题

0-1背包问题&#xff1a; 前提&#xff1a;给定n种物品和一个背包。物品i的重量是Wi&#xff0c;其价值为Vi&#xff0c;背包的容量为C。 问题&#xff1a;应如何选择装入背包的物品&#xff0c;使得装入背包中物品的总价值最大? 背包问题&#xff1a; 与0-1背包问题类似&…

企业级精致 Blazor 套件 BootstrapBlazor 介绍

BootstrapBlazor1、前言 Blazor 作为一种 Web 开发的新技术已经发展有一段时间了&#xff0c;有些人标称 无 JS 无 TS&#xff0c;我觉得有点误导新人的意味&#xff0c;也有人文章大肆宣传 Blazor 是 JavaScript 的终结者&#xff0c;是为了替代 JavaScript 而生的&#xff0c…