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

问题描述:

在这里插入图片描述

非递归方案一:代码

#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;这…

算法设计与分析——动态规划——矩阵连乘问题

动态规划与分治法的异同: 相同点:其基本思想都是将待求解问题分解为若干子问题,先求解子问题,再结合这些子问题的解得到原问题的解。 差异点:与分治法不同的是,适合用动态规划法求解的问题经分解得到的子问题往往不是相互独立的。有些问题分解后的子问题往往是重复的,…

python转字符_python 字符转换

我们所看到的“明文字符串”&#xff0c;都是经过编码(比如ASCII、Uncoded、UTF-8、GB-2312等)后呈现在我们面前的。文本中“3082”想要“所见到所得”到内存中处理&#xff0c;必须decode(hex)一下(把字符串处理成内存中表面“相同”的二进制)&#xff0c;表示成“\x30\x82&qu…

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

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

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

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

python豆瓣历史评分_Python实战-爬取豆瓣top250评分高于指定值的电影信息

思路1. 要获得怎么样的数据2. 找到数据来源3. 模拟浏览器发送请求获得数据4. 处理数据&#xff0c;保存数据第一步&#xff1a;在这里数据是豆瓣top250中高于指定分数的电影信息信息有&#xff1a;名称&#xff0c;评分&#xff0c;格言第二步&#xff1a;数据在网页html中&…

如何在 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]…

python2.7教程 pdf_PYTHON基础教程至60课(2.7版本)整理

python基础教程至60课整理2014年7月10日&#xff1a;(整理前几天内容)1.疑惑&#xff1a;a.forscoreindata[1:]:解答&#xff1a;将score一一赋data中从1号(第二个)开始到最后一个元素的值b.forIinrange(3):解答:将i赋予从零到三的值。2.配置系统环境变量&#xff1a;在Path变量…

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

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

算法设计与分析———动态规划———最大子段和

问题描述&#xff1a; 最大子段和问题是将一个n个整数的序列a[1]&#xff0c;a[2]….a[n]中字段a[first]….a[last]之和&#xff0c;(1<first<last<n)求这些子段和中最大的。 例如&#xff08;a[1],a[2],a[3],a[4],a[5],a[6]&#xff09;(-2,11,-4,13,-5,-2)时&#x…

python2中的unicode_在python 3和2中工作的Unicode文字

So I have a python script that Id prefer worked on python 3.2 and 2.7 just for convenience.Is there a way to have unicode literals that work in both? E.g.#coding: utf-8whatever שלוםThe above code would require a unicode string in python 2.x (u) and i…

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…

python量化常用_Python量化常用函数

#-*- coding: utf-8 -*-#Author: fangbei#Date: 2017-08-26#Original:price_str 30.14, 29.58, 26.36, 32.56, 32.82price_str price_str.replace( , ) #删除空格price_array price_str.split(,) #转成数组date_array[]date_base 20170118# for 循环for _ in range(0, len(pri…