千家信息网

如何进行C++字符串和数字的去重操作和鞍点的寻找

发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,本篇文章给大家分享的是有关如何进行C++字符串和数字的去重操作和鞍点的寻找,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言一串字符串或
千家信息网最后更新 2025年11月15日如何进行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#includeint 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安全错误 数据库的锁怎样保障安全 数据库查询数组内 数据库技术可能应用的领域 公务员网络安全 网络安全法律常识有哪些 包头市正规云计算网络安全培训班 苏州网络安全作业教育平台 网络安全性对电子支付的影响 伊利集团数据库设计代码设计 霞浦县盼翠网络技术推广部 网络安全与执法专科学校 软件开发团队管理方案和方法 零基础国家网络安全工程师证 西安一码通问题原因 数据库 怎么从万方数据库中删除文章 大庆指针软件开发公司 艾博数据库 微信一直服务器繁忙 网络安全文明教育的宣传稿 网络安全防护小技12 hive底层和数据库交互的原理 安徽ntp网络时间服务器供应商 m1芯片软件开发工具测评 百度网络技术有限公司的简介 电商管理数据库 派出所召开网络安全管理规范 高中英语演讲稿关于网络安全 我的世界光影能不能装进服务器 乐视手机 代理服务器 服务器功能及其主要技术要求 黄埔区数据网络技术开发
0