算法分析与设计实验一

实验一一共三题,附上题目及完整代码。

6104
题目內容:
求n个元素中的最大元素值,要求用递归与分治策略解决。
输入
第1行:元素个数n
第2行:n个元素的值
输出:
n个元素中的最大元素值
实例:
输入:
8 //元素个数
10 3 9 20 4 83 24 65 //8个具体的元素值
输出:
83 //最大元素值
输入输出说明:
输入
第1行:元素个数n​
第2行:n个元素的值
输出:
n个元素中的最大元素值
代码编辑:

#include<bits/stdc++.h>
using namespace std;
int n;
int a[10];
int solve(int l,int r)
{if(l==r) return a[l];return (solve(l,(l+r)/2)>(solve((l+r)/2+1,r))?solve(l,(l+r)/2):(solve((l+r)/2+1,r)));
}
int main()
{ios::sync_with_stdio(false);cin>>n;for(int i=0;i<n;i++)cin>>a[i];printf("%d\n",solve(0,n-1));
return 0;
}

6103
题目內容:
给定n个元素组成的序列,利用递归与分治策略对其进行排序。
输入:
第1行:元素个数n
第2行:n个元素值
输出:
排好序的n个元素,元素之间用空格分开。
实例:
输入:
5 //输入元素个数
220 10 30 50 40 //输入5个元素
输出:
10 30 40 50 220 //输出排好序的5个元素
输入输出说明:
输入:
第1行:元素个数n
第2行:n个元素值
输出:
排好序的n个元素,元素之间用空格分开。
代码编辑:

#include<bits/stdc++.h>
using namespace std;
int b[100];
void copy(int *a,int *b,int l,int r)
{for(int i=l;i<=r;i++)a[i]=b[i];
}
void merge(int *a,int *b,int l,int mid,int r)
{int i=l,j=mid+1,k=l;while(i<=mid&&j<=r){if(a[i]<=a[j])b[k++]=a[i++];elseb[k++]=a[j++];}if(i<=mid)for(int q=i;q<=mid;q++)b[k++]=a[q];elsefor(int q=j;q<=r;q++)b[k++]=a[q];
}
void mergesort(int *a,int l,int r)
{if(l<r){int i=(l+r)/2;mergesort(a,l,i);mergesort(a,i+1,r);merge(a,b,l,i,r);copy(a,b,l,r);}
}
int main()
{int n,a[100];cin>>n; for(int i=1;i<=n;i++)cin>>a[i];mergesort(a,1,n);for(int i=1;i<=n;i++)printf("%d ",a[i]);
return 0;
}

6102
题目內容:
在一个2k*2k个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一个特殊方格,且称该棋盘为一个特殊棋盘。在棋盘覆盖问题中,要用4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。


输入:棋盘行数,特殊方格的行坐标,特殊方格的列坐标
输出:填完之后的棋盘状态,对应输出项占两列。
说明:特殊方格位置填写数字0,其它L型骨牌从1开始填写。递归按照左上角,右上角,左小角,右小角的顺序进行。
下面是一个输入,输出实例,第一行是输入,其它行是输出。

输入输出说明:
输入:棋盘行数,特殊方格的行坐标,特殊方格的列坐标
输出:填完之后的棋盘状态,对应输出项占两列。
代码编辑:

#include<bits/stdc++.h>
using namespace std;
int Board[100][100]={0};
int tile=1;
void ChessBoard(int tr,int tc,int dr,int dc,int size)
{if(size==1) return ;int t=tile++;int s=size/2;if(dr<tr+s&&dc<tc+s) ChessBoard(tr,tc,dr,dc,s);else{Board[tr+s-1][tc+s-1]=t;ChessBoard(tr,tc,tr+s-1,tc+s-1,s);}if(dr<tr+s&&dc>=tc+s) ChessBoard(tr,tc+s,dr,dc,s);else{Board[tr+s-1][tc+s]=t;ChessBoard(tr,tc+s,tr+s-1,tc+s,s);}if(dr>=tr+s&&dc<tc+s) ChessBoard(tr+s,tc,dr,dc,s);else{Board[tr+s][tc+s-1]=t;ChessBoard(tr+s,tc,tr+s,tc+s-1,s);}if(dr>=tr+s&&dc>=tc+s) ChessBoard(tr+s,tc+s,dr,dc,s);else{Board[tr+s][tc+s]=t;ChessBoard(tr+s,tc+s,tr+s,tc+s,s);}
}
int main()
{int n,dr,dc,size,m;cin>>size>>dr>>dc;m=size;ChessBoard(1,1,dr,dc,size);for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){printf("%2d ",Board[i][j]);if(j==m) printf("\n");}}
return 0;
}

算法分析与设计实验一相关推荐

  1. 算法分析与设计实验报告 ——二分搜索程序算法的实现

    算法分析与设计实验报告 --二分搜索程序算法的实现 实验目的及要求 1.理解分治算法的概念和基本要素: 2.理解递归的概念: 3.掌握设计有效算法的分治策略: 4.通过二分搜索技术学习分治策略设计技巧 ...

  2. 算法分析与设计实验报告——实现汽车加油问题

    算法分析与设计实验报告--实现汽车加油问题 目录: 算法分析与设计实验报告--实现汽车加油问题 一. 实验目的 二.实验要求 三. 实验原理 四. 实验过程(步骤) 五. 运行结果 六.实验分析与讨论 ...

  3. 算法分析与设计实验报告——二分搜索算法的实现

    算法分析与设计实验报告--二分搜索算法的实现 目录: 算法分析与设计实验报告--二分搜索算法的实现 一. 实验目的 二.实验要求 三. 实验原理 四. 实验过程(步骤) 五. 运行结果 六.实验分析与 ...

  4. 中北大学算法分析与设计实验报告一(BF算法)

    中北大学算法分析与设计实验报告一(BF算法) 1.实验名称 实验一 算法基础实验:数理基础与串匹配程序设计 2.实验目的 以字符串匹配问题为例,结合C等编程语言和链表.堆.栈等数据结构知识,基于BF算 ...

  5. 算法分析与设计实验报告

    计算机算法分析与设计实验报告 实验一:递归回溯 阶乘(Factorial) #include<iostream> using namespace std; int factorial(in ...

  6. Python算法分析与设计实验:动态规划算法

    Python算法分析与设计实验:动态规划算法 一.实验目的 1.理解动态规划求解优化问题的典型步骤,以及动态规划算法求解计算问题的时间复杂度分析 2.熟练掌握利用动态规划算法求解一维.二维等典型优化问 ...

  7. python算法分析与设计实验:科赫雪花实验

    算法分析与设计实验:科赫雪花实验 一.实验目的 1.熟悉python编程环境,包括程序安装 2.熟悉python基本语法 3.递归算法程序分析与调试 二.实验工具 Win10操作系统.python3. ...

  8. 中北大学算法分析与设计实验报告六(最大团问题)

    中北大学算法分析与设计实验报告六(最大团问题) 1.实验名称 实验六 回溯与分支限界算法实验 2.实验目的 题目:最大团问题 强化学生利用回溯算法和优化处理实际问题的能力. 3.训练知识点集群 (1) ...

  9. 算法分析与设计-实验三 贪心算法设计

    文章目录 1.最优服务次序问题 2.区间相交问题 3.汽车加油问题 4.活动安排问题:考虑将一系列活动安排在科学会堂.假设有n个活动,每个活动需要花费一个单位时间.如果在时间T[i]或T[i]之前开始 ...

最新文章

  1. Adaboost原理与推导
  2. 华为、阿里员工跳槽至微软受抵制,微软当事人称:只是玩梗
  3. vue打包上线部分css效果错乱,vue-cli2打包后css部分样式错乱
  4. 【转载】架构师需要了解的Paxos原理、历程及实战
  5. 用shiro框架实现注册登陆,让你快速理解shiro用法
  6. 离线批量数据通道Tunnel的最佳实践及常见问题
  7. c 打印html文档,C# C/S程序使用HTML文件作为打印模板
  8. 快速批量改变图片格式
  9. github加速方法
  10. android 宽度是多少dp,Android开发中dp、dpi、px的区别
  11. 16行,使用Python制作简易版QQ自动回复机器人(windows版)
  12. day11 匿名函数与实参高阶函数
  13. LCD显示屏和OLED显示屏的区别
  14. 5款高质量app界面ui设计实例欣赏
  15. uniApp APP端调起微信支付失败errCode:-100的踩坑
  16. MySQL中添加新字段
  17. 入职脉脉是一种什么体验?附上我的脉脉Java后端开发面经,本人已于上周成功入职!
  18. 正則表達式基本使用方法简单介绍
  19. Spring IOC与DI、反射的理解 含小案例说明
  20. SV实验3 子系统验证和测试点划分

热门文章

  1. 电脑与云服务器传输文件,电脑与云服务器传输文件
  2. 大数据之分布式协调神器:Zookeeper选举
  3. lte接口流程图_LTE信令流程图(端到端平台)[技术学习]
  4. JDK 的安装和配置(JDK 1.8)
  5. CES Asia 2017:国内厂商大秀黑科技Hold住全场
  6. 一个正经的前端学习 开源 仓库(阶段十七-440)
  7. Maven 下载JAR包
  8. steam永久关闭令牌python脚本3秒1000个
  9. 插入硬盘:Raid卡做磁盘阵列及服务器挂载
  10. MDK470A LIC/ERROR R206: NO REGISTRY ACCESS, ADMINISTRATION RIGHTS REQUIRED