首页 > 其他分享 >二维数组不同行不同列的累加最值求解

二维数组不同行不同列的累加最值求解

时间:2024-03-23 12:30:58浏览次数:23  
标签:min int 元素 累加 二维 数组 ans 100 最值

//E: 给定 n 为 A,B 整型数组的长度,将 a 中所有元素与 b 中所有元素相乘进行累和(各数组
//元素不可重复使用),求其最小值。
//例:
//输入: 5
//1 8 -1 4 -2
//0 6 1 -4 -1
//输出: -4

上面为原始题目:

思路为用A和B数组所有元素依次相乘后的所有结果做一个二维数组,然后通过实现二维数组不同行与列的数值相加求最值,方式为递归。

#include <iostream>
int n;
bool first(int D[],int a,int step)
{
    for(int i=0;i<step;i++) {
        if (D[i] == a)
            return false;
    }
    return true;
}//这个函数为判断当前列元素是否为当前递归路径下的首次访问
void suanfa(int C[100][100],int x,int min,int &ans,int D[100])
{
    if(x==n)
    {
        if(ans>min)
            ans=min;
        return;
    }
        for(int y=0;y<n;y++)//循环列元素
        {
            int a=0;
            if(first(D,y,x))//检查当前列元素是否为首次使用
            {
                min+=C[x][y];
                a=1;
                D[x]=y;
                suanfa(C,x+1,min,ans,D);//递归让行数+1;
            }
            if(a==1)
                min=min-C[x][y];列元素循环需要判断是否需要退回min值;
        }
}//先把两个数组相乘后写入一个二维数组,然后通过递归让二维数组不同行不同列的元素相加,并的出最小值

int main() {
    int C[100][100];
    int A[100];
    int B[100];
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&A[i]);
    for (int i = 0; i < n; i++)
        scanf("%d",&B[i]);
    for(int x=0;x<n;x++)
        for(int y=0;y<n;y++)
            C[x][y]=A[x]*B[y];//这里为把两个数组相乘转化为二维数组;
        int min=0,ans=0;
        int D[100];
        for(int i=0;i<100;i++)
            D[i]=-1;
    suanfa(C,0,min,ans,D);
    printf("%d",ans);
        return 0;
}

标签:min,int,元素,累加,二维,数组,ans,100,最值
From: https://blog.csdn.net/2401_83795651/article/details/136924560

相关文章

  • 二维矩阵螺旋遍历
    //3.螺旋矩阵//例如n=4//要求:打印出螺旋矩阵,求i行j列的数字,0<n<10000//算法思想:只要找出每一层的第一个数即可,第一个数值为上一层的第一个数+4*n+4,循//环时n每次减2//+-------------------------->X轴//|1234//1213145//|1116156//|10......
  • 【模板】单调队列 滑动窗口最值
    LuoguP1886滑动队列/单调队列有一个长为 n 的序列 a,以及一个大小为 k 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。 以求最小值为例f[i]表示以i结尾的窗口中的最小值f[i]=min(a[j]),i-k+1<=j<=i暴力算法O(n^2)......
  • uniapp根据链接生成二维码
    1.我们在根目录common中新建一个js文件2.然后再这个js文件当中添加以下这些代码//uqrcode.js//---------------------------------------------------------------------//githubhttps://github.com/Sansnn/uQRCode//----------------------------------------------......
  • 微信公众号开发 - 扫描带参数二维码事件支持EventKey字符串传参
    $access_token=$this->access_token();//获取access_token$json_url='https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$access_token;$scene_id="A123B";$curl_data='{"action_name&......
  • LeetCodeHot100 二分查找 35. 搜索插入位置 74. 搜索二维矩阵 34. 在排序数组中查
    35.搜索插入位置https://leetcode.cn/problems/search-insert-position/description/?envType=study-plan-v2&envId=top-100-likedpublicintsearchInsert(int[]nums,inttarget){intleft=0;intright=nums.length-1;while(left<......
  • (41/60)0-1背包(二维数组、一维数组)、分割等和子集
    有点抽象0-1背包卡码网:携带研究材料(第六期模拟笔试)动态规划思路二维:意义:0~i物品内,放进容量为j的背包,最大价值为dp[i][j]递推:dp[i][j]=max(dp[i-1][j-weight[i],dp[i-1][j])初始化:第一列为0,第一行j>=weight[0]时赋值为value[0]遍历:先背包再物品/先物品再背包均可(......
  • vue3使用qrcodejs2-fix生成背景透明的二维码
    qrcodejs官方仓库:GitHub-davidshimjs/qrcodejs:Cross-browserQRCodegeneratorforjavascriptqrcodejs2-fix 是一个用于生成QR码的JavaScript库,使用的时候先安装,然后通过设置前景色和背景色可以控制显示的二维码效果。想生成透明背景的二维码也可以,我通过下面配置前景......
  • P2742 [USACO5.1] 圈奶牛Fencing the Cows /【模板】二维凸包
    原题链接题解这么优质的文章我写什么题解好难解释必然性感觉像模拟??code#include<bits/stdc++.h>usingnamespacestd;intq[100005]={0};structnode{doublex,y;}a[100005];doubledis(intb,intc){nodei=a[b],j=a[c];returnsqrt((i.x-j.x)*(i.x-......
  • 冒泡、选择排序;二维数组;函数三要素,形参实参
    冒泡排序法012max08,12,13,98,12,13,98,12,9,131318,12,98,9,121228,993第一轮从前往后两两比较,4个元素比较3次,得出最大值为13。第二轮,3个元素比较2次,最大值为12。第三轮,2个元素比较1次,最大值为9。通过简单较少的数据推导得出结论,i个元素需要比较i-1轮,第j轮需要比较i-1......
  • CleanMyMac2024最值得入手的Mac电脑清理神器
    一、引言随着科技的飞速发展,Mac已经成为众多设计师、程序员、艺术家等创意人士的首选工具。然而,随着时间的推移,Mac的性能逐渐下降,垃圾文件、安全隐患等问题接踵而至。这时,一款专业的清理软件——CleanMyMac应运而生,为你的Mac提供全方位的保护。CleanMyMacX2024全新版下载如......