企业网站如何设计网页/网页制作代码html制作一个网页

企业网站如何设计网页,网页制作代码html制作一个网页,途牛网站建设,用易语言做攻击网站软件片头 嗨~小伙伴们,大家好!现在我们来到实训篇啦~本篇章涉及算法知识,比基础篇稍微难一点,我会尽量把习题讲的通俗易懂。准备好了吗?咱们开始咯! 第1题 递归实现指数型枚举 我们先画个图~ 从图中&#xff…
片头

嗨~小伙伴们,大家好!现在我们来到实训篇啦~本篇章涉及算法知识,比基础篇稍微难一点,我会尽量把习题讲的通俗易懂。准备好了吗?咱们开始咯!


第1题  递归实现指数型枚举

  我们先画个图~

从图中,我们看到,每个位置都有2种选择,选或者不选。如果不选,那么该位置记为×;如果要选,该位置记为✔, 整个结构是一层一层递归的,是一个递归搜索树。

题目告诉我们,输入的整数n的范围:1<=n<=15,因此,我们可以定义一个长度为N的数组st[N],N为16,多开一个空间,记录每个位置的状态:0表示还没考虑,1表示选它,2表示不选它。

刚开始的时候,每个位置默认都是“不选”状态,一直递归到最后一层,最后恢复现场;回到调用的地方,继续往下执行;再一次选择的时候,是“被选”状态,一种递归到最后一层,最后恢复现场。

代码如下:

//递归实现指数型枚举
//从 1~n 这n个整数中随机选取任意多个,输出所有可能的选择方案。
//输入一个整数n。
//输出每行输出一种方案。
//同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。
//对于没有选任何数的方案,输出空行。
//数据范围  1 < n < 15const int N = 16;
int n;
int st[N];//表示这个位置的状态,//0表示还没考虑,1表示选它,2表示不选它void Func(int k) {//越界if (k > n) {for (int i = 1; i <= n; i++) {if (st[i] == 1)printf("%d ", i);}cout << endl;return;}//第一次都是不选st[k] = 2;Func(k + 1); //递归到下一层st[k] = 0;	 //恢复现场//第二次选st[k] = 1;Func(k + 1);//递归到下一层st[k] = 0;	//恢复现场
}int main() {cin >> n;Func(1);   //k初始值为1,表示从第1个位置开始return 0;
}

运行结果如下:


第2题  递归实现排列型枚举

 emmm,咱们先来画一个图~

我们可以采用:依次枚举每个位置放哪个数。

题目已知,输入的整数 1<=n<=9,定义长度为N的数组st[N],N为10,多开一个空间,记录每个位置的状态:0 表示还没放数,1~n 表示放了哪个数。

对于每一个位置,有1~n种选择,如果前面的数被用了,那么后面就不能再使用这个数字。因此,我们可以定义一个bool型的数组used[N],用来记录这个数是否被用过。

我们还要保证按照从小到大的顺序,因此,先排较小的数,再排较大的数,保证后一个数比前一个数大。定义一个for循环,依次循环遍历。

代码如下:

//递归实现排列型枚举
//把 1~n 这 n 个整数排成一行后随机打乱顺序,输出所有可能的次序。
//输入格式一个整数n。
//输出按照从小到大的顺序输出所有方案,每行1个。
//首先,同一行相邻两个数用一个空格隔开。
//其次,对于两个不同的行,对应下标的数--比较,字典序较小的排在前面。
//数据范围 1≤n < 9
//输入样例:
//  3
//输出样例 :
//	1 2 3
//	1 3 2
//	2 1 3
//	2 3 1
//	3 1 2
//	3 2 1const int N = 10;
int n;
int st[N];		//当前位置的状态//0 表示还没放数,1~n表示放了哪个数bool used[N];	//true表示用过,false表示还没用过void Func(int k) {//边界if (k > n) {for (int i = 1; i <= n; i++) {printf("%d ", st[i]);}cout << endl;return;}//依次枚举每个分支,即当前位置可以填哪些数for (int i = 1; i <= n; i++) {if (!used[i]) {			//如果这个数字没有被用过st[k] = i;			//当前这个位置填入数字used[i] = true;		//标记这个数字被用过了Func(k + 1);		//递归到下一层st[k] = 0;			//恢复现场used[i] = false;	//恢复现场}}
}int main() {cin >> n;Func(1);return 0;
}

运行结果如下:


第3题  递归实现组合型枚举

这道题,仍然需要画图~

代码如下:

//递归实现组合型枚举
//从 1~n 这 n个整数中随机选出 m 个,输出所有可能的选择方案。
//输入两个整数 n, m, 在同一行用空格隔开。
//输出按照从小到大的顺序输出所有方案,每行1个。
//首先,同一行内的数升序排列,相邻两个数用一个空格隔开!
//其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如1357排在1368前面)
//数据范围 n > 0 , 0 < m < n , n + (n - m)≤25
//输入样例 :
//5 3
//输出样例 :
//	1 2 3
//	1 2 4
//	1 2 5
//	1 3 4
//	1 3 5
//	1 4 5
//	2 3 4
//	2 3 5
//	2 4 5
//	3 4 5const int N = 30;
int ways[N];
int n, m;void dfs(int k, int start) {if (k > m)  //如果k>m,那么刚好选了m个数,打印输出{            for (int i = 1; i <= m; i++) {printf("%d ", ways[i]);}puts("");return;}for (int i = start; i <= n; i++) {ways[k] = i;		//填入数dfs(k + 1, i + 1);	//递归到下一层ways[k] = 0;		//恢复现场}
}int main() {cin >> n >> m;dfs(1, 1);//最开始从第1个位置开始,start的初始值为1return 0;
}

我们还可以对代码进一步优化:当选中的前 k-1个数 + 剩余的 n-start+1 之和小于 m 的时候,直接退出。

	if (k - 1 + n - start + 1 < m) return;//剪枝: 如果把后面的数都选上,都不够m个,当前的分支就一定无解

第4题  简单斐波那契

这道题,我们在基础篇已经讲过。可以先定义一个数组,把斐波那契数列存进去,再遍历。

代码如下:

//简单斐波那契
//以下数列0 1 1 2 3 5 8 13 21...被称为裴波纳契数列。
//这个数列从第3项开始,每一项都等于前两项之和。
//输入一个整数N,请你输出这个序列的前N项。
//输入一个整数N。
//输出在一行中输出斐波那契数列的前N项,数字之间用空格隔开。
//数据范围  0 < N < 46
//输入样例:  5
//输出样例 : 0 1 1 2 3const int N = 50;int main() {int n;cin >> n;int a[N];a[0] = 0;a[1] = 1;a[2] = 1;for (int i = 3; i <= 46; i++) {a[i] = a[i - 1] + a[i - 2];}for (int i = 0; i < n; i++) {printf("%d ", a[i]);}cout << endl;return 0;
}

 我们还可以将代码优化

int main() {int n;cin >> n;int a = 0;int b = 1;for (int i = 0; i <= n - 1; i++) //i的范围: 0~n-1{cout << a << " ";//必须先打印a的值//如果先执行c=a+b,那么a原来的值会被覆盖掉int c = a + b;a = b;b = c;}return 0;
}

 我们画个图,理解一下优化代码:

iab
0f(0) = 0f(1) = 1
1f(1) = 1f(2) = 1
2f(2) = 1f(3) = 2
3f(3) = 2f(4) = 3
4f(4) = 3f(5) = 5
5f(5) = 5f(6) = 8
.........
n-2f(n-2)f(n-1)
n-1f(n-1)f(n)
nf(n)f(n+1)

观察上表,我们发现

当 i == 0 时,a的值为f(0)=0;

当 i == 1 时,a的值为f(1)=1;

当 i == 2 时,a的值为f(2)=1;

当 i == 3 时,a的值为f(3)=2;

当 i == 4 时,a的值为f(4)=3;

......

当 i == n-1 时,即可输出a的值f(n-1)。

你可能会问:为啥不把打印a放在最后面?哈哈,如果把这行代码放最后面,a原来的值会被覆盖掉,所以必须把 cout<<a<<"  "; 这行代码放最前面

或者这样写也可以:

	for (int i = 1; i <= n; i++) //i的范围: 1~n{cout << a << " ";//必须先打印a的值//如果先执行c=a+b,那么a原来的值会被覆盖掉int c = a + b;a = b;b = c;}

第5题  翻硬币

 对于这道题,咱们先画个图~

因此,我们发现,每次都是翻转相邻2个硬币,我们可以每相邻2个硬币共用1个开关。

我们可以定义2个数组,分别表示初始状态和目标状态,2个数组必须长度相同。定义计数器count,用来记录总共操作步数。从初始数组的第一个元素开始比较,如果和目标数组对应位置的元素不一样,那么改变当前元素的状态,并且计数器+1。

代码如下:

//翻硬市
//小明正在玩一个“翻硬币”的游戏.
//桌上放着排成一排的若干硬币。我们用"表示正面,用。表示反面(是小写字母,不是零)
//比如,可能情形是: **oo***oooo
//如果同时翻转左边的两个硬币,则变为 : oooo***oooo
//现在小明的问题是 : 如果已知了初始状态和要达到的目标状态
//每次只能同时翻转相邻的两个硬币, 那么对特定的局面,最少要翻动多少次呢 ?
//我们约定 : 把翻动相邻的两个硬币叫做一步操作。
//输入格式
//两行等长的字符串,分别表示初始状态和要达到的目标状态
//输出格式
//1个整数,表示最小操作步数
//数据范围
//输入字符串的长度均不超过100.
//数据保证答案一定有解。const int N = 110;
char start[N];
char aim[N];void turn(int a) {if (start[a] == '*')start[a] = 'o';elsestart[a] = '*';
}int main() {cin >> start;	//输入初始状态cin >> aim;		//输入目标状态int len = strlen(start);	//计算字符串长度int count = 0;				//统计翻转次数for (int i = 0; i < len; i++) {if (start[i] != aim[i]) //如果当前位置的值二者不相同,//那么将start位置的值改变{turn(i);turn(i + 1);count++;			//次数+1}}cout << count << endl;return 0;
}

第6题  汉诺塔

咱们可以先画个图,理解一下什么是汉诺塔问题规则:

Hanoi塔问题规则

  1. 每次只能移动1个圆盘;
  2. 圆盘可以插在X、Y和Z中的任一塔座上;
  3. 任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。

 如图所示是一个3阶的Hanoi塔演示(从左往右依次为X、Y、Z塔):

Hanoi塔分析

①当 n==1 阶汉诺塔时,将唯一的圆盘从塔座X直接移动到塔座Z。

 ②当 n>1 时(动图展示为 n==3),需要利用Z作为辅助塔总是设法将X塔的最后一个圆盘n移动到Z塔下,则必然要将 1~n-1 个圆盘移动到Y塔

③此时Y塔作为最初的X塔的状态,X塔作为Z塔的最初状态,X塔是辅助塔,应该将当前Y塔下的最后1个圆盘 n-1 移动到Z塔上。

④若 n>3,则不断在②和③循环执行,直到将所有的圆盘全部有移动到Z塔上

⑤当还剩最后1个圆盘时,则执行第1个步骤,直接将圆盘移动到Z塔。

如上步骤一般,当 n>1 总是在步骤②、③重复,且Z塔与X塔交换成为辅助塔。所以,我们可以使用递归来处理这种重复步骤。

//汉诺塔//定义汉诺塔递归函数
//n: 盘子的数量
//source: 起始柱
//target: 目标柱
//auxiliary: 辅助柱void hanota(int n, char source, char target, char auxiliary) {//基本情况: 如果只有1个盘子,直接移动到目标柱if (n == 1) {cout << "将盘子 1 从 " << source << " 移动到 " << target << endl;return;		//递归终止}//递归步骤1: 将前 n-1 个盘子从起始柱移动到辅助柱(借助目标柱)hanota(n - 1, source, auxiliary, target);//将第n个盘子(最大的盘子)从起始柱移动到目标柱cout << "将盘子 "  << n << " 从 " << source << " 移动到 " << target << endl;//递归步骤2: 将前 n-1 个盘子从辅助柱移动到目标柱(借助起始柱)hanota(n - 1, auxiliary, target, source);}int main() {int n = 3;cout << "解决 " << n << " 个盘子的汉诺塔问题: " << endl;//调用汉诺塔函数, A 是起始柱, C是目标柱, B是辅助柱hanota(n, 'A', 'C', 'B');return 0;
}


 第7题  奇妙变换

 这道题,我们只需要按照题目要求,编写代码即可。注意:这里的元素类型为长整型long long,如果为int整型,容易溢出。

#include <iostream>
using namespace std;const int mod = 998244353;long long func(long long n){if(n<=10) return n*(n-1);else{long long ans = 2*n*func(n-6);ans %= mod;return ans;}
}int main()
{long long n;cin >> n;long long ret = func(n);cout << ret << endl;return 0;
}

第8题  全排列的价值

我们举个例子,比如:“3”的全排列

假设有5个数,分别为“1”,“3”,“2”,“5”,“4”,全排列的价值为8 

做过逆序对问题的话,明显可以看出对于任意一个排序,其价值等于逆序对的数量。考虑使用dp来进行递推,我们定义f(n)为1~n的全排列中所有排列的价值之和,明显可以得到f(1)=0,f(2)=1。

关键在于:如何从f(n-1)递推得到f(n)的值?我们以n为4时进行举例,仔细观察3的全排列:

此时,我们在这些排列的基础上插入”4“,无论在哪个排列中插入”4“,都有4个插入的位置,比如插入第1个排列(1,2,3)时可以得到下面4种情况:

我们每个排列只看元素4带来的贡献分别为 0+1+2+3 = 6,对于3的任何一个排列我们插入"4"带来的价值都一样,这是因为我们在n-1的全排列插入n时,排列中的元素都严格小于n,所以我们当n插入的位置之前有几个元素,则带来的价值就是几。

根据该推导可知:当在n-1的任何一个排列插入n时,n带来的贡献则为\sum_{i=1}^{n-1} i,也就是从1累加到n-1,我们可以使用高斯求和计算。当然,这只是1个排列带来的价值,对于n而言,它的全排列的数量为n!,我们设g(n)为n的全排列的数量,也就是n的阶乘。

我们上述只考虑了n给我们带来的价值,我们当然还必须考虑其他数,对于排列(1,2,3),在插入4后有四种情况,它自己也变成了4份,价值也相应变成了4倍,"3" 的任何一个排列的价值都是如此。由此我们可以得知,当从f(n-1)递推到f(n)时,f(n-1)会变成n倍。根据上述的推导我们可以得到递推转移公式:

 答案很大,在推导过程中,需要进行取模

typedef long long ll;
const int MOD = 998244353;	//定义模数vector<long long> f(1000010, 0);//f数组,存储结果
vector<long long> g(1000010, 0);//g数组,存储阶乘//初始化g数组,计算阶乘
void init(int n) {long long h = 1;for (int i = 1; i <= n; i++) {h = h * i % MOD;	//计算阶乘并取模g[i] = h;}
}//全排列的价值
int main() {int n;cin >> n;	//输入nf[1] = 0;	//初始化f[1]init(n);	//初始化g数组//动态规划计算f[i]for (int i = 2; i <= n; i++) {f[i] = (f[i - 1] * i % MOD + (long long)i * (i - 1) / 2 % MOD * g[i - 1] % MOD) % MOD;}cout << f[n] << endl;	//输出结果return 0;
}

第9题  数正方形

对于本道题,咱们需要画图理解~

观察上图,我们可以发现,

①nn点阵,边长(n-1)×(n-1)

②1×1的正方形,填 (n-1)^2个

③2×2的正方形中,有一个卡着中间的1个独特正方形,加上本身,一共2个每个单元,能填(n-2)^2个

④同理,3×3的正方形中间可以卡2个独特的正方形,加上本身,一共3个每个单元,能填(n-3)^2个

⑤一直到 (n-1)×(n-1)的正方形中间可以卡 n-2 个独特的正方形,加上本身,一共 n-1 个每个单元,这就是第1个 i 的范围,从1~n-1

⑥后面(n-1)^2就是总共的单元个数,乘以每个单元有多少个,即为for循环代码含义。

我们看看当 n=6 时,也就是边的个数 => n-1 = 5 情况:

 看到题给示例不同大小的画法,一个思路是,把正方形划分成不同维度的单元块去找,有助于我们聚焦于更易于计算的子问题。

考虑一个 n×n 的点阵,其边长为 (n-1)×(n-1)

那我们先取 1×1 大小的单元,在这个 n×n 的点阵里,就像一块小积木一样,全图四处划动,显然单元有 (n-1)×(n-1) 种存在的方式,而每个单元内部最多只能画出1个正方形。因此,对于 1×1 这个维度在全图中就有 1×(n-1)×(n-1) 种画法。

 2×2 大小的单元,有 (n-2)×(n-2) 种取法,对于每个 2×2 单元的内部,能画出一个 2×2 的边框正方形,还能画出一个斜着放的正方形,那么对于每个单元有2种画法,对于 2×2 这个维度在全图中就是 2×(n-2)×(n-2) 种画法。

3×3 大小的单元,取法 (n-3)×(n-3) 种,对于每个 3×3 单元的内部,可以有3种画法,全图总共 3×(n-3)×(n-3) 种画法。

..........

(n-1)×(n-1) 的单元,把整个图框满了,只能有1种取法,对于这个单元,内部易知有 n-1 种画法,对于 (n-1)×(n-1) 这个维度在全图就是 (n-1)×1×1 种画法。

1 i 对每个 i × i 的单元遍历求和:ans += i×(n-i)×(n-i)

每一步都取余一次就可以得到答案了。

#include <iostream>
using namespace std;typedef long long ll;
const int mod = 1e9 + 7;int main()
{ll n;		// n*n 点阵cin >> n;ll ans = 0;for (int i = 1; i <= n - 1; i++) {ans += i * (n - i) * (n - i);ans %= mod;}cout << ans << endl;return 0;
}

片尾

今天我们学习了递归以及相关的算法知识,希望看完这篇文章对友友们有所帮助!!!

点赞收藏加关注!!!

谢谢大家!!!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS(最小化)安装之后,快速搭建Docker环境

本文以VMware虚拟机中安装最小化centos完成后开始。 1. 检查网络 打开网卡/启用网卡 执行命令ip a查看当前的网络连接是否正常&#xff1a; 如果得到的结果和我一样&#xff0c;有ens网卡但是没有ip地址&#xff0c;说明网卡未打开 手动启用&#xff1a; nmcli device sta…

软考《信息系统运行管理员》- 5.3 信息系统数据资源备份

文章目录 数据资源备份类型按数据备份模式分按备份过程中是否可接收用户响应和数据更新分按数据备份策略分按备份的实现方式分按数据备份的存储方式分 常用备份相关技术磁盘阵列技术双机热备 某公司数据备份管理制度实例 数据资源备份类型 数据备份系统由硬件和软件两部分组成…

H3CNE综合小实验之电视机

H3CNE综合小实验之电视机 一、实验拓扑图 二、实验要求 按照图示配置IP地址&#xff1b;按照图示区域划分配置对应的动态路由协议&#xff1b;在R7上配置dhcp服务器&#xff0c;能够让pc可以获取IP地址&#xff1b;将所有环回⼝宣告进ospf中&#xff0c;将环回⼝7宣告进rip中…

Axios企业级封装实战:从拦截器到安全策略!!!

&#x1f680; Axios企业级封装实战&#xff1a;从拦截器到安全策略 &#x1f527; 核心代码解析 // 创建Axios实例 const service axios.create({baseURL: api, // &#x1f310; 全局API前缀timeout: 0, // ⏳ 永不超时&#xff08;慎用&#xff01;&#xff09;withCrede…

DCAT模型:双交叉注意力革新医学影像诊断,AUC 99.75%

一、研究背景&#xff1a;医学影像诊断的挑战 在医学影像领域&#xff08;如X光、OCT&#xff09;&#xff0c;精准分类疾病直接影响患者治疗决策。传统深度学习模型存在两大痛点&#xff1a; 1.过度自信&#xff1a;即使图像模糊或存在噪声&#xff0c;模型仍可能给出高…

2.2.2 Spark单机版环境

本文介绍了如何搭建和使用Spark单机版环境。首先&#xff0c;确保安装配置好JDK&#xff0c;然后从群共享下载Spark安装包并上传至云主机的/opt目录。接着&#xff0c;解压到/usr/local目录并配置环境变量&#xff0c;通过spark-submit --version验证安装成功。在使用Spark单机…

SAP消息号类型(E/I/W)的定制

比如这样的M8088的标准的消息号&#xff0c;希望变更消息类型&#xff0c;查询之后&#xff0c;网上提供的消息&#xff0c;都是SE91,OMRM&#xff0c;OBA5之类的消息。事实上&#xff0c;SE91是不能变更消息类型的。 而在OMRM界面&#xff0c;只看到有限的几个消息号。 原来&a…

wazuh安全管理工具

Wazuh 通过监控操作系统和应用程序层面的终端设备&#xff0c;增强您基础设施的安全可见性。其核心功能涵盖日志分析、文件完整性监控、入侵检测以及合规性监控。 一、介绍 1. 核心功能 1.1 主机入侵检测&#xff08;HIDS&#xff09; 文件完整性监控&#xff08;FIM&#…

MATLAB 控制系统设计与仿真 - 29

用极点配置设计伺服系统 方法1-前馈修正 对于一个可控的系统&#xff0c;我们知道可以用极点配置来得到系统的动态响应指标&#xff0c;但是系统有时会存在较大的静态误差。 例如&#xff1a; 系统的状态矩阵如下&#xff0c;试求取其阶跃响应。 MATLAB 代码如下&#xff1…

编译原理——自底向上语法优先分析

文章目录 自底向上优先分析概述一、自底向上优先分析概述二、简单优先分析法&#xff08;一&#xff09;优先关系定义&#xff08;二&#xff09;简单优先文法的定义&#xff08;三&#xff09;简单优先分析法的操作步骤 三、算法优先分析法&#xff08;一&#xff09;直观算符…

Opencv计算机视觉编程攻略-第四节 图直方图统计像素

Opencv计算机视觉编程攻略-第四节 图直方图统计像素 1.计算图像直方图2.基于查找表修改图像3.直方图均衡化4.直方图反向投影进行内容查找5.用均值平移法查找目标6.比较直方图搜索相似图像7.用积分图统计图像 1.计算图像直方图 图像统计直方图的概念 图像统计直方图是一种用于描…

5、vim编辑和shell编程【超详细】

一、vim 1、了解 Vim (Vi IMproved) 是一款功能强大的文本编辑器。 正常模式&#xff1a;vim 文件&#xff0c;刚打开的样子vim模式&#xff1a;输入文本的地方命令模式&#xff1a;输入 :wq等等的位置&#xff0c;可以对文本进行一些操作&#xff0c;比如&#xff1a;保存文…

《Robust Synthetic-to-Real Transfer for Stereo Matching》

论文地址&#xff1a;https://arxiv.org/pdf/2403.07705 源码地址&#xff1a;https://github.com/jiaw-z/DKT-Stereo 概述 通过在合成数据上预训练的模型在未见领域上表现出强大的鲁棒性。然而&#xff0c;在现实世界场景中对这些模型进行微调时&#xff0c;其领域泛化能力可…

蓝桥杯第10届 后缀表达式

题目描述 给定 N 个加号、M 个减号以及 NM1 个整数 A1,A2,⋅⋅⋅,ANM1​&#xff0c;小明想知道在所有由这N 个加号、M 个减号以及 NM1 个整数凑出的合法的 后缀表达式中&#xff0c;结果最大的是哪一个&#xff1f; 请你输出这个最大的结果。 例如使用 1 2 3 -&#xff0c…

C++前缀和

个人主页&#xff1a;[PingdiGuo_guo] 收录专栏&#xff1a;[C干货专栏] 大家好&#xff0c;今天我们来了解一下C的一个重要概念&#xff1a;前缀和 目录 1.什么是前缀和 2.前缀和的用法 1.前缀和的定义 2.预处理前缀和数组 3.查询区间和 4.数组中某个区间的和是否为特定…

uni app跨端开发遇到的问题

技术栈 uni app&#xff0c;vue3&#xff0c;uview puls&#xff0c;map… nvue 因为项目中有地图&#xff0c;要使用到map标签&#xff0c;所以考虑用原生nvue开发&#xff0c;它是有痛点的&#xff0c;首先浏览器不支持&#xff0c;我是要开发ios和Android&#xff0c;所以…

element-ui messageBox 组件源码分享

messageBox 弹框组件源码分享&#xff0c;主要从以下两个方面&#xff1a; 1、messageBox 组件页面结构。 2、messageBox 组件属性。 一、组件页面结构。 二、组件属性。 2.1 title 标题&#xff0c;类型为 string&#xff0c;无默认值。 2.2 message 消息正文内容&#xf…

支付页面安全与E-Skimming防护----浅谈PCI DSS v4.0.1要求6.4.3与11.6.1的实施

关键词&#xff1a;支付页面安全、E-Skimming、PCI DSS v4.0.1、第三方脚本、风险管理、持卡人数据、数据安全、第三方服务提供商、TPSP、内容安全、网页监控、恶意脚本攻击 本文为atsec和作者技术共享类文章&#xff0c;旨在共同探讨信息安全的相关话题。转载请注明&#xff…

【gradio】从零搭建知识库问答系统-Gradio+Ollama+Qwen2.5实现全流程

从零搭建大模型问答系统-GradioOllamaQwen2.5实现全流程&#xff08;一&#xff09; 前言一、界面设计&#xff08;计划&#xff09;二、模块设计1.登录模块2.注册模块3. 主界面模块4. 历史记录模块 三、相应的接口&#xff08;前后端交互&#xff09;四、实现前端界面的设计co…

案例分享|树莓派媒体播放器,重构商场广告的“黄金三秒”

研究显示&#xff0c;与传统户外广告相比&#xff0c;数字户外广告在消费者心中的记忆率提高了17%&#xff0c;而动态户外广告更是能提升16%的销售业绩&#xff0c;整体广告效率提升了17%。这一显著优势&#xff0c;使得越来越多资源和技术流入数字广告行业。 户外裸眼3D广告 无…