如何进行C++字符串和数字的去重操作和鞍点的寻找
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,本篇文章给大家分享的是有关如何进行C++字符串和数字的去重操作和鞍点的寻找,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言一串字符串或
千家信息网最后更新 2024年11月26日如何进行C++字符串和数字的去重操作和鞍点的寻找
本篇文章给大家分享的是有关如何进行C++字符串和数字的去重操作和鞍点的寻找,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
前言
一串字符串或者一串数字的去重操作往往困扰着我们,还有鞍点的计算,也是一个令人头疼的问题,接下来,我将用标记法和数组的散列映射为大家剖析去重操作,以及鞍点的计算。
一、数字和字符串去重
1、标记法对数字去重
#includeint main(){ int n, i, j, flag = 1;//先将flag置一 int a[1000]; scanf("%d", &n); for (i = 0; i < n; i++)//写一个for循环读入数据 { scanf("%d", &a[i]); for (j = 0; j < i; j++) { if (a[i] == a[j]) { flag = 0; break; } } if (flag) printf("%d ", a[i]); flag = 1;//标记的flag重新置1,循环再次继续。 } return 0;}
2、标记法对字符串去重
标记法对字符串进行去重操作#includeint main(){ int i, j, flag=1; char s[1000]; gets(s);//直接读入字符串,包括空格 for (i = 0; i < strlen(s); i++)//直接用strlen计算输入的字符串的长度 { for (j = 0; j < i; j++) { if (s[i] == s[j])//如果有相同字符,则将标记置0,并跳出循环 { flag = 0; break; } } if (flag) printf("%c", s[i]);//因为是每个字符输出,所以是%c flag = 1; } return 0;}
去重之后的输出:
3散列映射对数字去重
#includeint main(){ int n; int a[1000], b[6000] = { 0 };//定义两个数组,第二个数组要开得比第一个数组大一些; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); for (int i = 0; i < n; i++) { b[a[i]]++;//将数组a的数当作数组b的下标,将数组b中a数组作下标的数都变1; if (b[a[i]] > 1) a[i] = -1;//若该数重复被遇到,则再加,所以但b[a[i]]>1时,说明已经遇到过一次了 } for (int i = 0; i < n; i++) if (a[i] != -1) printf("%d ", a[i]); return 0;}
4、(1)散列映射对字符串去重
#include#include int main(){ int i, j=0; char a[1000], b[6000] = { 0 }; gets(a);//直接读入字符串,包括空格 for (i = 0; i < strlen(a); i++)//直接用strlen计算输入的字符串的长度 { b[a[i]]++; if (b[a[i]] > 1) a[i] = -1; //若该数重复被遇到,则再加,所以但b[a[i]] > 1时,说明已经遇到过一次了 } for (i = 0; i < strlen(a); i++) { if(a[i] !=-1) printf("%c", a[i]); } return 0;}
(2)散列映射对字符串去重(更好理解的版本)
#includeint main(){ char s1[400],s2[400]; int a = 0,b=0; int arr[300] = {0}; gets(s1); for (int i = 0; s1[i]; i++) a++;//计算s1的元素个数 for (int i = a; i >=0; i--) { arr[s1[i]]++;将s1的数组内的元素当下标 if (arr[s1[i]] == 1)//如果arr数组的元素=1,则将s1的元素存到s2 { s2[b] = s1[i]; b++;计算数组s2的个数 } } for (int i = b - 1; i >= 0; i--) printf("%c", s2[i]); return 0;}
二、鞍点的计算
什么是鞍点:有1个n×n的矩阵,从左上到右下称为主斜线(倾角135º),从右上到左下称为次斜线(倾角45º),在主斜线上最大,次斜线上最小的元素称为该矩阵的斜线鞍点。
#includeint a[100][100];int main(){ int p[200], q[200];//p主大,q主小 int n, i, m,j,s; scanf("%d", &n); for (i = 0; i < n; i++) for (j = 0; j < n; j++) scanf("%d", &a[i][j]); for (i = 0; i < 2 * n - 1; i++)//线条数 { p[i] = 0x80000000;//最小整数 q[i] = 0x7fffffff;//最大整数 } for (i = 0; i < n; i++) for (j = 0; j < n; j++) { if (a[i][j] > p[n + i - j - 1]) p[n + i - j - 1] = a[i][j];//找主斜线的最大值 if (a[i][j] < q[i + j]) q[i + j] = a[i][j];//找次斜线最小值 } s = 0; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (a[i][j] == p[n + i - j - 1] && a[i][j] == q[i + j]) s += a[i][j]; } }printf("%d", s); return 0;}
以上就是如何进行C++字符串和数字的去重操作和鞍点的寻找,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
字符
字符串
斜线
数字
数组
标记
元素
j++
最大
最小
个数
循环
C++
倾角
整数
更多
知识
矩阵
空格
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库总成绩
小学生网络安全教育课件ppt
网络技术的相关书籍哪里可以下
数据库和应用程序实例
数据库建立
mysql服务器测试环境
餐盟网络技术有限公司怎么样
ip地址的服务器数量怎么确定的
火狐网络安全选项
跑跑手游服务器在哪买
甘肃定制化服务器什么价位
网络技术是如何革新教育的
济南有实力的浪潮服务器多少钱
常州服务器机柜定制
杭州定制企业app软件开发
海思做服务器
图数据库的数据存储方式
火影忍者的网络服务器管理员是谁
大名租房软件开发
惠普服务器杭州维修电话
软件开发公司如何退税
网络安全组的作用
失落的方舟进不去服务器验证失败
岳阳网络技术学校
环保管家科技性互联网
鹤岗手机软件开发
学生网络安全手抄报简单又好看
香港服务器租用
网络安全有必要做吗
网络安全规划方案包括哪些内容