uva12545 位元變換器(貪心)

2022-05-06 16:21:09 字數 548 閱讀 5215

輸入兩個等長的串s,t(長度小於100),其中s包含字元0,1,?,t中包含0和1。有三種操作:將s中的0變為1,?變為0或1,交換s中的任意兩個字元。求將s變成t的最少步數。

首先考慮去掉問號。設s中1的個數為one1,t中1的個數為one2。在one1#include using namespace std;

const int maxl=105;

int t, l1, l2, one1, one2, step;

char s1[maxl], s2[maxl];

int main()

for (int i=0; ione2) --one1, s1[i]='0';\

++step;

}for (int i=0; iif (one1for (int i=0; iif (s1[i]!=s2[i]) ++tmp;

step+=tmp/2; //這是由於只有0和1

printf("case %d: %d\n", it, step);

}return 0;

}

UVa 12545 位元變換器

題意 輸入兩個等長的串s和t,其中s包含字元0,1,但t只包含0和1。用盡量少的步數把s變成t。每步有3種操作 把s中的0變成1 把s中的 變成0或者1 交換s中任意兩個字元。思路 題目不是很難。首先考慮交換,然後再看有多少不同的,就需要再加上多少次。1 include 2 include3 inc...

紫書 習題8 3 UVa 12545 (構造法)

參考了 最後推出來操作的個數為問號的個數 加上 同一位置上s串為0而t串為1的位置數量 與 同一位置上s串為1而t串為0的位置數量的最大值。也就是max ans1 ans2 que que為問號總數,而ans1和ans2意義如上 這個公式應該是眾多部落格裡面最簡單的了,讓我一步一步推給你看 首先判斷...

RAC連線的問題ORA 12545

連線到rac資料庫的時候經常會出現ora 12545錯誤,在metalink上查詢了一下,是oracle的乙個小bug。在遠端客戶端連線rac資料庫時,通過統一的服務名連線時經常會出現ora 12545錯誤。sql conn ndmain testrac輸入口令 已連線。sql conn ndmai...