栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构与算法实验(2)-第11周(猜题版)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构与算法实验(2)-第11周(猜题版)

2-1 最大子列和问题 这道题主要考察动态规划

思路:虽然上课老师讲了四种方法(暴力、优化暴力、分治和一个不知道什么东西)

还是建议这道题用动态规划做,非常经典的DP题目

从全局来看,遍历整个数组,第i个元素的最大子序列只取决于自己和前面的最大子序列。取个最大值就行。这C语言真垃圾,max函数都没有
ps:题目中如果序列中所有整数皆为负数,则输出0这句话并没有用,也建议大家删去这句话

代码如下:

#include 
#include 
#include 

typedef long long int LL;

#define MAXN 250;

int get_max(int x,int y)
{
    return x>=y?x:y;
}
int main()
{
    int n;
    int a[100100];
    int res = -1e6, sum = 0;
    scanf("%d",&n);
    for(int i=0;i 
2-2 输出全排列 
本题考查DFS/递归 
思路:开两个数组深搜就完了,但是要注意输出空格和x是否等于n的判定 

ps:忽视我的注释

代码如下:

#include 
#include 
#include 
typedef long long int LL;
#define MAXN 250;
int n,v[15],a[15];
void DFS(int x)
{
    for(int i=1;i<=n;i++)
    {
        if(!v[i])
        {
            v[i] = 1;
            a[x] = i;
            if(x == n)
            {
                for(int j=1;j<=n;j++)
                {
                    printf("%d",a[j]);
                    if(j == n)printf("n");
                }
            }
            else
                DFS(x+1);
            v[i] = 0;

        }
    }
}
//int get_max(int x,int y)
//{
//    return x>=y?x:y;
//}
int main()
{
    scanf("%d",&n);
    DFS(1);
    return 0;
}


2-3 二分查找 (20 分) 本题考查二分查找

思路:直接二分就完了,我为了怕错(其实是自己菜)写了三个条件语句,实际上两个就够用了

代码如下:

Position BinarySearch(List L, ElementType X)
{
    if(L == NULL)return NotFound;
    int start = 1,end = L->Last;
    int mid;
    while(start<=end)
    {
        mid=(start + end)/2;
            if(X>L->Data[mid])start = mid + 1;
            else if (XData[mid]) end = mid - 1;
            else return mid;
    }
    return NotFound;
}
2-4 本题考查

思路:

代码如下:


2-5 本题考查

思路:
代码如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/512089.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号