字串交換 多圓環的應用

2021-10-03 17:24:05 字數 1186 閱讀 3461

原題:

描述給兩個長度為 n 的,只由』a』,『c』,『g』,'t』四種字元組成的字串 s和 t 。每次操作可以交換 s 的任意兩個位置的字元。問最少需要幾次操作才能將 s 變成 t 。保證每種字元在 s 和 t **現次數相等 。

輸入包括兩行,第一行字串 s ,第二行字串 t ,它們的長度相等 (1≤n≤10^6)。

輸出 輸出乙個數字表示答案。

輸入樣例 1

cgata

atagc

輸出樣例 1

2輸入樣例 2

ctagagtcta

taccgtatag

輸出樣例 2

7拿到這一題我們首先要考慮字元進行轉換的幾種情況

1、兩對間進行轉換

如a ->b

b->a

轉換對數為2,代價為1;

2、三對字元進行轉換

如a->b

b->c

c->a

轉換對數為3,代價為2;

3、三對字元進行轉換

如a->b

b->c

c->d

d->a

轉換對數為4,代價為3;

因為題目中有且僅有四個元素,即當轉換對數大於4時的情況不存在;

顯然由於貪心思想,我們知道,由於單位轉換效率排序,我們先1後2再3進行操作

#include

#define ll long long

using

namespace std;

char s[

1000010];

char t[

1000010];

int a[5]

[5];

intmain()

} ll ans =0;

for(

int i=

1;i<=

4;i++

)//二圓環

for(

int j=i+

1;j<=

4;j++)}

for(

int i=

1;i<=

4;i++

)//三圓環}}

}}for(

int i=

2;i<=

4;i++

)//最後只剩4圓環,因此任意找一點即可

cout<}

交換字串

include include using namespace std void swap char a,char b 傳指標引用,傳入的是實參而不是形參,所以能夠實現交換 intmain 寫這個還發現乙個鬼畜的事情,vs2017不支援 char ap hey 這種寫法,看其他博主也遇到了這個問題,...

字串的應用

對解決非數值的問題,主要設計到的操作物件是字串,簡稱串。對串的儲存可以又兩種處理方式 一種是將串定義成字元型陣列,串的儲存空間分配在編譯是完成,不能更改,這種方式稱為串的靜態儲存結構 另外一種是串的儲存空間在程式執行時動態分配,這種方式稱為串的動態儲存結構。串的鏈式儲存結構是包含資料域和指標域的節點...

字串的應用

字串在我們編碼的過程中是必不可少的乙個元素,我們或多或少的要對字串進行一些使用,那麼使用過程中就會需要不同的方法來實現我們的需求 這些方法使用的恰當的話,會使我們程式編譯更加輕鬆和快捷 下面介紹幾種方法,和例項的應用 charat 返回指定下標的字元,由乙個char型別接收 indexof 和las...