原題:
描述給兩個長度為 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...