C++字符串和數(shù)字的去重操作和鞍點(diǎn)的尋找
前言
一串字符串或者一串?dāng)?shù)字的去重操作往往困擾著我們,還有鞍點(diǎn)的計(jì)算,也是一個(gè)令人頭疼的問題,接下來,我將用標(biāo)記法和數(shù)組的散列映射為大家剖析去重操作,以及鞍點(diǎn)的計(jì)算。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、數(shù)字和字符串去重
1、標(biāo)記法對(duì)數(shù)字去重
#include<stdio.h>
int main()
{
int n, i, j, flag = 1;//先將flag置一
int a[1000];
scanf("%d", &n);
for (i = 0; i < n; i++)//寫一個(gè)for循環(huán)讀入數(shù)據(jù)
{
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;//標(biāo)記的flag重新置1,循環(huán)再次繼續(xù)。
}
return 0;
}
2、標(biāo)記法對(duì)字符串去重
標(biāo)記法對(duì)字符串進(jìn)行去重操作
#include<string.h>
int main()
{
int i, j, flag=1;
char s[1000];
gets(s);//直接讀入字符串,包括空格
for (i = 0; i < strlen(s); i++)//直接用strlen計(jì)算輸入的字符串的長(zhǎng)度
{
for (j = 0; j < i; j++)
{
if (s[i] == s[j])//如果有相同字符,則將標(biāo)記置0,并跳出循環(huán)
{
flag = 0;
break;
}
}
if (flag) printf("%c", s[i]);//因?yàn)槭敲總€(gè)字符輸出,所以是%c
flag = 1;
}
return 0;
}
去重之后的輸出:
?
?3散列映射對(duì)數(shù)字去重
#include<stdio.h>
int main()
{
int n;
int a[1000], b[6000] = { 0 };//定義兩個(gè)數(shù)組,第二個(gè)數(shù)組要開得比第一個(gè)數(shù)組大一些;
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
for (int i = 0; i < n; i++)
{
b[a[i]]++;//將數(shù)組a的數(shù)當(dāng)作數(shù)組b的下標(biāo),將數(shù)組b中a數(shù)組作下標(biāo)的數(shù)都變1;
if (b[a[i]] > 1) a[i] = -1;//若該數(shù)重復(fù)被遇到,則再加,所以但b[a[i]]>1時(shí),說明已經(jīng)遇到過一次了
}
for (int i = 0; i < n; i++) if (a[i] != -1) printf("%d ", a[i]);
return 0;
}
?4、(1)散列映射對(duì)字符串去重
#include<stdio.h>
#include<string.h>
int main()
{
int i, j=0;
char a[1000], b[6000] = { 0 };
gets(a);//直接讀入字符串,包括空格
for (i = 0; i < strlen(a); i++)//直接用strlen計(jì)算輸入的字符串的長(zhǎng)度
{
b[a[i]]++;
if (b[a[i]] > 1) a[i] = -1; //若該數(shù)重復(fù)被遇到,則再加,所以但b[a[i]] > 1時(shí),說明已經(jīng)遇到過一次了
}
for (i = 0; i < strlen(a); i++)
{
if(a[i] !=-1) printf("%c", a[i]);
}
return 0;
}
(2)散列映射對(duì)字符串去重(更好理解的版本)
#include<stdio.h>
int 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++;//計(jì)算s1的元素個(gè)數(shù)
for (int i = a; i >=0; i--)
{
arr[s1[i]]++;將s1的數(shù)組內(nèi)的元素當(dāng)下標(biāo)
if (arr[s1[i]] == 1)//如果arr數(shù)組的元素=1,則將s1的元素存到s2
{
s2[b] = s1[i];
b++;計(jì)算數(shù)組s2的個(gè)數(shù)
}
}
for (int i = b - 1; i >= 0; i--)
printf("%c", s2[i]);
return 0;
}
二、鞍點(diǎn)的計(jì)算

?什么是鞍點(diǎn):有1個(gè)n×n的矩陣,從左上到右下稱為主斜線(傾角135o),從右上到左下稱為次斜線(傾角45o),在主斜線上最大,次斜線上最小的元素稱為該矩陣的斜線鞍點(diǎn)。
#include<stdio.h>
int 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++)//線條數(shù)
{
p[i] = 0x80000000;//最小整數(shù)
q[i] = 0x7fffffff;//最大整數(shù)
}
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;
}
總結(jié)
提示:這里對(duì)文章進(jìn)行總結(jié):
例如:以上就是今天要講的內(nèi)容,本文僅僅簡(jiǎn)單介紹了pandas的使用,而pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。
到此這篇關(guān)于C++字符串和數(shù)字的去重操作和鞍點(diǎn)的尋找的文章就介紹到這了,更多相關(guān)C++去重和鞍點(diǎn)尋找內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談使用Rapidxml 庫(kù)遇到的問題和分析過程(分享)
下面小編就為大家?guī)硪黄獪\談使用Rapidxml 庫(kù)遇到的問題和分析過程(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
解析VScode在Windows環(huán)境下c_cpp_properties.json文件配置問題(推薦)
這篇文章主要介紹了解析VScode在Windows環(huán)境下c_cpp_properties.json文件配置問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
C++ 中消息隊(duì)列函數(shù)實(shí)例詳解
這篇文章主要介紹了C++ 中消息隊(duì)列函數(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
C++中CString string char* char 之間的字符轉(zhuǎn)換(多種方法)
在寫程序的時(shí)候,我們經(jīng)常遇到各種各樣的類型轉(zhuǎn)換,比如 char* CString string 之間的互相轉(zhuǎn)換,這里簡(jiǎn)單為大家介紹一下,需要的朋友可以參考下2017-09-09
C++深入講解namespace與string關(guān)鍵字的使用
namespace命名空間或者叫名字空間,傳統(tǒng)的c++只有一個(gè)全局的namespace,namespace引入了復(fù)雜性。namespace允許像類,對(duì)象,函數(shù)聚集在一個(gè)名字下。本質(zhì)上講namespace是對(duì)全局作用域的細(xì)分2022-05-05

