贪心算法(几种常规样例)
贪心算法(几种常规样例)
贪心算法,指在对问题进行求解的时候,总是做出当前看来是最好的选择。也就是说不从整体上最优上考虑,算法得到的结果是某种意义上的局部最优解
文章目录
- 贪心算法(几种常规样例)
- 介绍
- 使用步骤
- 模板
- 贪心算法的缺陷
- 经典例子
- 常见例子
- 活动选择问题
- 钱币找零问题
- 背包问题
- 小船过河问题
- 区域覆盖
介绍
可以用贪心算法解决的问题有以下特征
-
1.贪心选择的性质:一个问题的整体最优解可以通过一系列局部的最优解的选择达到。并且每一次的选择可以依赖于之前做出的选择,但是不依赖后面做出的选择。这就是贪心选择性质。对于一个具体的问题,要确定他是否具有贪心选择的性质,必须证明每一步所作的贪心选择最终导致问题的整体的最优解
-
2.最优子结构性质:当一个恩问题的最优解包含其子问题的最优解的时候,此问题具有最优子结构性质。问题的最优子结构性质是该问题可用贪心法的求解所在。
使用步骤
使用贪心算法的基本步骤:
1>建立数学模型来描述问题 。
2>把求解的问题分成若干个子问题 。
3>对每个子问题求解,得到子问题的局部最优解。
4>把子问题的解局部最优解合成原来解问题的一个解。
实际上在使用贪心算法的时候,待选
模板
while(约束条件成立)
{选择当前最优解,记录并累计到最后的解中if(当前最优解使用完毕)当前最优解=当前次优解;
}
贪心算法的缺陷
以下缺陷
1.不能保证解是最佳的。因为贪心算法得到的是局部最优解,不是从整体开了整体最优解。
2.贪心算法只能确定某些问题的可行性范围
缺陷1和2的意思是贪心算法是有局限性的,就i比如钱币找零,如果是8元,有2元和5元,那么5元一张,2元一张,剩下1元那么接下来就无法运算了,实际上,可以四张2元即可,这就是一个例子
3.贪心算法一般用来解决最大或者最小解
该缺陷就是,贪心算法是以某一种策略来选择一个数值,而不是遍历出所有解,要遍历出某个问题的所有解的话,常常使用回溯法
经典例子
1.活动选择问题
2.钱币找零问题
3.再论背包问题
4.小船过河问题
5.区间覆盖问题
常见例子
活动选择问题
该问题一般可以用贪心算法和动态规划来解决,我们下文用贪心算法来解决。
问题的形式为:在某地要举办多个活动,每一个活动要花费不同的时间(起止时间不同),问怎么安排尽量多的活动呢?该问题用贪心算法可以解决的原因是:下个活动的选择可以只是取决于上一个活动的截止时间,不必要考虑全局
活动 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|
开始时间 | 1 | 3 | 0 | 5 | 3 | 5 | 6 | 8 | 8 | 2 | 12 |
结束时间 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
在解决这个问题的时候,要对于结束时间进行排序,因为上一个活动的结束时间会影响下一个活动的选择,而当前活动的开始时间不会影响下一个活动的选择,所以只看结束时间就好,用上一个活动的结束时间来跟下一活动的开始时间进行对比,如果前者小于后者,那么就是后者就是下一个活动,否则继续比较下下一个活动的开始时间
解题思路
将所有活动按照结束时间进行排序
然后默认选取第一个活动,用变量endTime标注当前活动的结束时间,然后与后面活动的开始时间进行比较
如果前者结束时间小于等于后者活动开始时间,那么选择后者这个活动,反之,继续比较下下一个活动,再次进行判断
重复进行第三步,直到所有活动比较完成
import java.util.*;/*** 活动选择:* 大概形式为:在某一个地方,有多个活动要进行,活动有开始时间和结束时间,我们该如何选择才能在这一天中这一个地点,举办最多的活动* 求解最多的活动个数为?*/
class Play{int preTime;int endTime;//表示活动的开始时间和结束时间
}
public class 活动选择 {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);//我们可以用容器来存储各个活动,然后进行贪心算法,最后得到结果//我们可以用链表来进行存储,排序LinkedList<Play> linkedList=new LinkedList();int n=scanner.nextInt();//表示活动的个数for (int i = 0; i <n ; i++) {//提案写每一个活动的开始时间和结束时间Play play=new Play();play.preTime=scanner.nextInt();play.endTime=scanner.nextInt();linkedList.add(play);//存储链表中,然后进行对于结束时间排序}Collections.sort(linkedList, new Comparator<Play>() {@Overridepublic int compare(Play o1, Play o2) {return o1.endTime-o2.endTime;}});//排序完成//然后进行判别,从第一个活动开始int num=0;//计数Play Time=linkedList.get(0);for (int i = 0; i <linkedList.size() ; i++) {if(Time.endTime<=linkedList.get(i).preTime){Time=linkedList.get(i);num++;}}System.out.println(num);//得到}
}
钱币找零问题
该问题的一般描述是:假设1元、2元、5元、10元、20元、50元、100元的纸币分别有a , b , c , d , e ,f 张。现在要用这些钱来支付K元,至少要用多少张纸币?该问题和上个问题有些类似,要解决该问题时,一般也有两个数组,一个表示面额的大小,一个表示不同面额钱币对应的数量,并且表示面额的数组是有序的。
我们求解的是最少的钱币数目,所以可以使用贪心算法
1.理所当然先使用大额纸币,当大额纸币张数不够的时候,再使用后面较小面额的纸币,依次递减,直到表示完所有纸币
2.做题方法可以递归也可以迭代
import java.util.*;public class 钱币找零问题 {public static void main(String[] args) {//题目:指定币值和相应的数量,用最少的数量去凑齐某金额//思路:利用贪心算法,我们优先选择面值大的纸币,依次类推,直到凑齐总金额Scanner scanner=new Scanner(System.in);int num=scanner.nextInt();//输入总金额greedy(num);}public static void greedy(int num){int[] values = { 1, 2, 5, 10, 20, 50, 100 };//数量int[] counts = { 3, 3, 2, 1, 1, 3, 3 };//获取需要各种面值多少张int[] result = getNumber(num, values, counts);System.out.println("各币值的数量:"+Arrays.toString(result));}public static int[] getNumber(int sum,int []values,int[]counts){int []result=new int[7];//表示有七种钱币//我们要找的是每一种钱币所需的票数int add=0;//表示需要的总钱数for (int i = values.length-1; i >=0 ; i--) {int num=(sum-add)/values[i];if(num>counts[i]){num=counts[i];}//add加上数值add=add+num*values[i];result[i]=num;}return result;}//或者这样迭代public static int[] get(int sum,int []values,int[]counts){int []result=new int[values.length];for (int i = values.length-1; i >=0 ; i++) {int num=Math.min(counts[i],sum/values[i]);result[i]=num;sum=sum-num*values[i];}return result;}
}
背包问题
不是01背包
常见题型为给定n种物品,一个背包,背包的容量是c,二米一个物品i的价值为vi,重量为wi,如何选择装入的物品使得背包的总价值最大?
此处的背包问题指的是部分背包,不是像01背包问题那样,某个物品不能拆开,此处的物品可以拆开,选取一部分放入背包中。从贪心算法的角度来看,我们保证的是背包的总价值最大,就是要确保放入的每一件物品的单个价值尽量大。(可以拆开)
步骤如下
1.需要将物品按照单位重量价值进行排序。
2.将尽可能多的单位i重量价值最高的物品装入被阿波,若最大单位重量价值的物品全部装入背包后,背包华友多余容量,则选择单位重量价值次高的尽可能多的装入背包中。
3.如果最后一件物品无法装入,那就计算可以装入的比例,然后按照比例装入
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.Scanner;/*** 贪心的背包 ,有n个物品,一个背包,然后想使得这个背包的价值最大* 不是01背包不可拆分物品,这个是可以拆分的*/
class beiBao{int values;int weight;//价值和重量double wValues;//单个物品的单位重量的价值
}
public class 背包 {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();int weight=scanner.nextInt();//背包能承受的重量LinkedList<beiBao> linkedList=new LinkedList();for (int i = 0; i <n ; i++) {beiBao b=new beiBao();b.values=scanner.nextInt();b.weight=scanner.nextInt();b.wValues=b.values/b.weight;linkedList.add(b);}Collections.sort(linkedList, new Comparator<beiBao>() {@Overridepublic int compare(beiBao o1, beiBao o2) {return (int)(o2.wValues-o1.wValues);}});for (int i = 0; i <n ; i++) {System.out.println(linkedList.get(i).wValues);}double allvalues=0;boolean[] flag=new boolean[n];for (int i = 0; i < flag.length; i++) {flag[i]=false;//表示没有放入背包中}for (int i = 0; i <n ; i++) {if(linkedList.get(i).weight<=weight){flag[i]=true;weight=weight-linkedList.get(i).weight;allvalues+=linkedList.get(i).values;System.out.println("重量为:"+linkedList.get(i).weight+"价格为:"+linkedList.get(i).values+"可以完全装入");}}for (int i = 0; i <n ; i++) {if(!flag[i]){double rate=(double)weight/linkedList.get(i).weight;allvalues=allvalues+rate*linkedList.get(i).values;weight-=linkedList.get(i).weight;System.out.println("重量为:"+linkedList.get(i).weight+"价值为:"+linkedList.get(i).values+"装入比例为:"+rate);}}System.out.println("总价值为:"+allvalues);}
}
小船过河问题
该问题常见的描述是:有n个人需要过河,只有一艘船,最多能乘坐两个人,串的航行速度为两人中较慢的一人的速度,过去后需要一个人把船划回来,把n个人运到对岸,最少需要多久。
假设这些人花费的时间都存储在一个数组中,升序排列,也就是由快到慢,每个人所花费的时间为time[0],time[1]……time[n]
当人数>=4的时候,该问题有两个选择:
1.最快的和次快的先过河,然后最快的将船划回来;次慢的和最慢的过河,然后次快的回来,此时我们计算以下这个过程花费的时间
图示
第二种方式:
1.最快的最慢的过河,然后最快的将船划回来,,最快的和次慢的过河,然后最快的再回来
图示
上面过河有两种方式,具体使用的时候可以比较谁时间更短再使用他
如果人数小于4
1.人数为三的时候,此时固定用时为time[0]+time[1]+time[2]
2.人数为二的时候,此时固定用时为time[1]
3.人数为一的时候,固定用时为time[0]
/** 有n个人需要过河,只有一艘船,最多能乘2人,船的运行速度为2人中较慢一人的速度,* 过去后还需一个人把船划回来,把n个人运到对岸,最少需要多久。*/
public class River {public static void main(String[] args) {int[] times={1,2,4,5,8};int result=crossRiver(times);System.out.println("所花时间为:"+result);}private static int crossRiver(int[] times){/*n表示还未过河的人数,初始化为所有人*/int n=times.length;int result=0;while(n>0){if(n==1){result=result+times[0];break;}else if(n==2){result=result+times[0]+times[1];break;}else if(n==3){result=result+times[0]+times[1]+times[2];break;}else{/*在每次过河时,在两种方式上进行比较,选择耗时更少的那个*/result=result+Math.min(times[1]+times[0]+times[n-1]+times[1],times[n-1]+times[0]+times[n-2]+times[0]);/*无论采取哪种方式,最后的结果都是讲最慢的和次慢的运送过河,也就是数组的最后两位,所以此处可简单地将数组长度-2*/n=n-2;}}return result;}
}
区域覆盖
此问题描述的是:给定一个长度为m的区间,再给出n条线段的起点和终点(闭区间),求最少使用读哦少条线段 可以将整个区间完全覆盖,步骤如下:
- 在所有待选择的区间里,剔除起点和终点在所求范围之外的区间。
- 将所有区间按起点进行排序
- 默认选中第一个点,然后在挑选点的过程中,需要遵循以下原则:新区间的起点要小于当前区间的终点,新区间的终点应大于当前区间的起点
- 循环重复步骤3,直到当前区间的终点值>=预期的终点值,结束寻找区间的过程
import java.util.*;
class quJian{int pre;int end;//表示区间的起点和终点
}
public class 区间覆盖 {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);//加入区间 10个int n=scanner.nextInt();int m=scanner.nextInt();//假设所求区间范围为[n,m];LinkedList <quJian>linkedList=new LinkedList();for (int i = 0; i <7 ; i++) {quJian qj=new quJian();qj.pre=scanner.nextInt();qj.end=scanner.nextInt(); //1.删除起点和终点在所要求范围外的区间if(!(qj.pre<n&&qj.end<n||qj.pre>m&&qj.end>m)){linkedList.add(qj);}}//先进行排序Collections.sort(linkedList, new Comparator<quJian>() {@Overridepublic int compare(quJian o1, quJian o2) {return o1.pre-o2.pre;//按照小区间的起点排下序,升序}});//然后进行选取boolean flag=false;int count=1;//计数System.out.println("起点:"+linkedList.get(0).pre+","+linkedList.get(0).end);int end=linkedList.get(0).end;for (int i = 1; i <linkedList.size() ; i++) {if(linkedList.get(i).pre<=end&&linkedList.get(i).end>end){end=linkedList.get(i).end;//更新end点for (int j = i+1; j <linkedList.size() ; j++) {//然后从这后面找到最长的endif(linkedList.get(j).end>end){end=linkedList.get(j).end;count++;//找到一个区间System.out.println(linkedList.get(j).pre+" "+linkedList.get(j).end);if(end>=m){flag=true;}}}}if(flag){break;}}System.out.println(count);}
}
相关文章:
贪心算法(几种常规样例)
贪心算法(几种常规样例) 贪心算法,指在对问题进行求解的时候,总是做出当前看来是最好的选择。也就是说不从整体上最优上考虑,算法得到的结果是某种意义上的局部最优解 文章目录贪心算法(几种常规样例&…...
【数据结构】基础知识总结
系列综述: 💞目的:本系列是个人整理为了数据结构复习用的,由于牛客刷题发现数据结构方面和王道数据结构的题目非常像,甚至很多都是王道中的,所以将基础知识进行了整理,后续会将牛客刷题的错题一…...
宣布推出 .NET 社区工具包 8.1!
我们很高兴地宣布 .NET Community Toolkit 8.1 版正式发布!这个新版本包括呼声很高的新功能、bug 修复和对 MVVM 工具包源代码生成器的大量性能改进,使开发人员在使用它们时的用户体验比以往更好! 就像在我们之前的版本中一样,我…...
ChatGPT解开了我一直以来对自动化测试的疑惑
目录 前言 与ChatGPT的对话 什么是自动化测试,我该如何做到自动化测试,或者说需要借助什么工具可以做到自动化测试? 自动化测试如何确保数据的准确性 自动化测试是怎么去验证数据的 如何通过断言验证数据 自动化测试有哪些验证工具可以验证数据 总结 前言…...
十大经典排序算法(上)
目录 1.1冒泡排序 1. 算法步骤 3.什么时候最快 4. 什么时候最慢 5.代码实现 1.2选择排序 1. 算法步骤 2. 动图演示 3.代码实现 1.3 插入排序 1. 算法步骤 2. 动图演示 3. 算法实现 1.4 希尔排序 1. 算法步骤 2. 动图演示 3.代码实现 1.5 归并排序 1. 算法步骤 2…...
如何从 MySQL 读取 100w 数据进行处理
文章目录 场景常规查询流式查询MyBatis 流式查询接口非流式查询和流式查询区别游标查询场景 大数据量操作的场景大致如下: 1、 数据迁移; 2、 数据导出; 3、 批量处理数据; 在实际工作中当指定查询数据过大时,我们一般使用分页查询的方式一页一页的将数据放到内存处理。…...
【数据降维-第2篇】核主成分分析(KPCA)快速理解,及MATLAB实现
一篇介绍了PCA算法的快速理解和应用,本章讲一下KPCA。KPCA方法与PCA方法一样,是有着扎实的理论基础的,相关理论在论文上以及网络上可以找到大量的材料,所以这篇文章还是聚焦在方法的快速理解以及应用上,此外还会对同学…...
Python+ChatGPT实战之进行游戏运营数据分析
文章目录一、数据二、目标三、解决方案1. DAU2. 用户等级分布3. 付费率4. 收入情况5. 付费用户的ARPU最近ChatGPT蛮火的,今天试着让ta写了一篇数据分析实战案例,大家来评价一下!一、数据 您的团队已经为您提供了一些游戏数据,包括…...
Java每日一练(20230313)
目录 1. 字符串统计 ★ 2. 单词反转 ★★ 3. 俄罗斯套娃信封问题 ★★★ 🌟 每日一练刷题专栏 C/C 每日一练 专栏 Python 每日一练 专栏 Java 每日一练 专栏 1. 字符串统计 编写一个程序,对于输入的一段英语文本,可以统计&#…...
国内ChatGPT日趋成熟后,可以优先解决的几个日常小问题
现在ChatGPT的发展可谓如日中天,国内很多大的公司例如百度、京东等也开始拥抱新技术,推出自己的应用场景,但可以想象到的是,他们必定利用这个新技术在巩固自己的现有应用场景,比如某些客服,你都不用想&…...
业内人士真心话,软件测试是没有前途的,我慌了......
我在测试行业爬模滚打7年,从点点点的功能测试到现在成为高级测试,工资也翻了几倍。个人觉得,测试的前景并不差,只要自己肯努力。 我刚出来的时候是在鹅厂做外包的功能测试,天天点点点,很悠闲,点…...
哈佛与冯诺依曼结构
1. 下图是典型的冯诺依曼结构 2. CPU分为三部分:ALU运算单元,CU控制单元,寄存器组。 3. 分析51单片机为何能使用汇编进行编程 51指令集(Instruction Set)是单片机CPU能够执行的所有指令的集合。在编写51单片机程序时&a…...
传输安全HTTPS
为什么要有 HTTPS 为什么要有 HTTPS?简单的回答是:“因为 HTTP 不安全”。HTTP 怎么不安全呢? 通信的消息会被窃取,无法保证机密性(保密性):由于 HTTP 是 “明文” 传输,整个通信过…...
Docker--(六)--Docker资源限制
前言系统压力测试Cpu资源限制Mem资源限制IO 资源限制【扩展】 1.前言 在使用 Docker 运行容器时,一台主机上可能会运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU、内存和磁盘资源。如果不对容器使用的资源进行限制&#x…...
消息队列总结及案例
文章目录python内置队列先进先出的队列Queue分布式队列rabbitmqrocketmqredis list 队列python内置队列 标准库queue提供Queue队列、LifoQueue栈、PriorityQueue优先级队列用于单机的生产者、消费者缓冲队列; 生产者,生产消息的进程或线程;…...
通过WiFi连接adb调试
通过WiFi连接adb调试 解决 cannot connect to 192.168.1.136:5555: 由于目标计算机积极拒绝,无法连接。 (10061) 解决办法1 (Windows下cmd环境执行) 1.连接USB数据线,打开USB调试 使用windows的“运行”命令行方式:&a…...
【蓝桥杯-筑基篇】常用API 运用(1)
🍓系列专栏:蓝桥杯 🍉个人主页:个人主页 目录 🍍1.输入身份证,判断性别🍍 🍍2.输入英语句子,统计单词个数🍍 🥝3.加密解密🥝 🌎4.相邻重复子串…...
想要成为高级网络工程师,只需要具备这几点
首先,成为高级网络工程师的目的,就是为了搞钱。高级网络工程师肯定是不缺钱的,但成为高级网络工程师你一定要具备以下几点:第一 心态作为一个高级网工,首先你必须情绪要稳定,在碰到重大故障的时候不慌&…...
c++ 每日十问3-处理数据
1.为什么 C有多种整型? 解析: C语言中包含多种整数类型,主要包括 short、int、long 和 long long 这4种,每一种还分别包含有符号类型和无符号类型(unsigned)。此外,char 类型也可以看作一种小整数类型。C语言中这些整数类型的主要区别在于存…...
【MySQL】实验一 数据定义
目录 1. 表定义:创建工程项目表 2. 表定义:创建供应商表 3. 表定义:创建供应情况表 4. 表定义:创建零件表 5. 表定义:创建student表 6. 表定义:创建course表 7. 表定义:创建sc表 8.…...
17.电话号码的字母组合(深度递归遍历解决经典老题)
前文C深度递归遍历解决"电话号码的字母组合问题",本题考察的比较全面,考察到vector的使用,深度遍历以及递归的熟练度,希望能对铁子们有所帮助一,题目链接:https://leetcode.cn/problems/letter-c…...
Python 基础教程【1】:Python介绍、变量和数据类型、输入输出、运算符
本文已收录于专栏🌻《Python 基础》文章目录1、Python 介绍2、变量和数据类型2.1 注释的使用2.2 变量以及数据类型2.2.1 什么是变量?2.2.2 怎么给变量起名?2.2.3 变量的类型🎨 整数 int🎨 浮点数(小数&…...
【RPC】Apache Thrift系列详解 - 概述与入门
文章目录前言正文Thrift的技术栈Thrift的特性(一) 开发速度快(二) 接口维护简单(三) 学习成本低(四) 多语言/跨语言支持(五) 稳定/广泛使用Thrift的数据类型Thrift的协议Thrift的传输层Thrift的服务端类型Thrift入门示例(一) 编写Thrift IDL文件(二) 新建Maven工程总结前言 Th…...
class03:MVVM模型与响应式原理
目录一、MVVM模型二、内在1. 深入响应式原理2. Object.entries3. 底层搭建一、MVVM模型 MVVM,即Model 、View、ViewModel。 Model > data数据 view > 视图(vue模板) ViewModel > vm > vue 返回的实例 > 控制中心, 负责监听…...
[Spring学习]08 @Resource和@Autowired注解的区别
目录前言一、Resource和Autowired注解的身世1、Resource注解2、Autowired注解3、常见的三种依赖注入方式及区别1. Filed注入2. Setter注入3. Constructor注入4. 三种依赖注入方式的区别二、Resource和Autowired注解的区别三、Resource和Autowired注解的推荐用法前言 当我们在属…...
前端开发神器VS Code安装教程
✅作者简介:CSDN一位小博主,正在学习前端 📃个人主页:白月光777的CSDN博客 💬个人格言:但行好事,莫问前程 安装VS CodeVS Code简介VS Code安装VS Code汉化结束语💡💡&…...
【Hive进阶】-- Hive SQL、Spark SQL和 Hive on Spark SQL
1.Hive SQL 1.1 基本介绍概念Hive由Facebook开发,用于解决海量结构化日志的数据统计,于2008年贡献给 Apache 基金会。Hive是基于Hadoop的数据仓库工具,可以将结构化数据映射为一张表,提供类似SQL语句查询功能本质:将Hi…...
搭建自己的直播流媒体服务器SRS,以及SRS+OBS直播推拉流使用及配置
一、前言 目前,全球直播带货什么的,成为主流,那如何自己搭建一个直播服务器呢。首先需要一个流媒体服务器,搭建流媒体有很多种方式,如下: 流媒体解决方案 Live555 (C)流媒体平台框…...
Node.js-----使用express写接口
使用express写接口 文章目录使用express写接口创建基本的服务器创建API路由模块编写GET接口编写POST接口CROS跨域资源共享1.接口的跨域问题2.使用cros中间件拒绝跨域问题3.什么是cros4.cros的注意事项5.cros请求的分类JSONP接口1.回顾jsonp的概念和特点2.创建jsonp接口的注意事…...
【Linux修炼】16.共享内存
每一个不曾起舞的日子,都是对生命的辜负。 共享内存一.共享内存的原理二.共享内存你的概念2.1 接口认识2.2演示生成key的唯一性2.3 再谈key三.共享资源的查看3.1 如何查看IPC资源3.2 IPC资源的特征3.3 进程之间通过共享内存进行关联四.共享内存的特点五.共享内存的内…...
wordpress增加购物车/世界杯积分榜排名
匿名函数和闭包 学习要点: 1.匿名函数 2.闭包 匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数。 一.匿名函数 //普通函数 function box() { //函数名是box return Lee; } //匿名函数 function () { //匿名函数ÿ…...
成人高考考试时间/seo优化网站教程百度
使用merge merge into 表名t1using (select 数据数据 字段1,数据数据 字段2 from dual) t2on(t1.字段1 t2.字段1)when matched thenupdate set t1.字段2t2.字段2when not matched theninsert values (t2.字段1, t2.字段2) 转载于:https://www.cnblogs.com/pangkang/p/8342258.…...
大武口做网站的/百度竞价推广是什么工作
装饰器模式 装饰器模式,动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。 代码示例 #coding:utf-8 #装饰器模式class Beverage():name ""price 0.0type "BEVERAGE"def getPrice(se…...
怎么看公司网站做的好不好哦/太原做网站推广的公司
一 前言温习python 多进程语法的时候,对 join的理解不是很透彻,本文通过代码实践来加深对 join()的认识。multiprocessing 是python提供的跨平台版本的多进程模块。multiprocessing可以充分利用多核,提升程序运行效率。multiprocessing支持子…...
网站备案能快速备案嘛/seo入门教学
下载Visual Paradigm最新版本在本教程中,我们将向您介绍如何绘制ArchiMate图表,该图表着眼于Discharging Patients的程序,特别是从业务流程的角度。完成本教程后,我们应该得到类似于下面的图表。注意:为简单起见&#…...
做网站运营需要会什么/电子商务网站
这篇文章主要介绍了python修改文件内容的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一、修改原文件方式 def alter(file,old_str,new_str): """ 替换文件中的字符串 :param fil…...