微軟程式設計之美 初賽

2022-03-12 03:39:14 字數 1342 閱讀 8008

相似字串對於兩個長度相等的字串,我們定義其距離為對應位置不同的字元數量,同時我們認為距離越近的字串越相似。例如,「0123」和「0000」的距離為 3,「0123」和「0213」的距離則為 2,所以與「0000」相比,「0213」和「0123」最相似。

現在給定兩個字串 s1 和 s2,其中 s2 的長度不大於 s1。請在 s1 中尋找乙個與 s2 長度相同的子串,使得距離最小。

輸入包括多組資料。第一行是整數 t,表示有多少組測試資料。每組測試資料恰好佔兩行,第一行為字串 s1,第二行為 s2。所有字串都只包括「0」到「9」的字元。

對於每組測試資料,單獨輸出一行「case #c: d」。其中,c 表示測試資料的編號(從 1 開始),d 表示找到的子串的最小距離。

1 ≤ t ≤ 100

小資料:字串長度不超過 1000

大資料:字串長度不超過 50000

樣例輸入

3

0123456789

321010203040506070809

40420121221

211

樣例輸出

case #1: 2

case #2: 1

case #3: 1

1 #include2 #include

3 #include4

intmain()528

if(count29 min=count;30}

31 printf("

case #%d:

",c);

32if(t==0

)33 printf("%d"

,min);

34else

35 printf("

%d\n

",min);36}

37return0;

38 }

#include#include#include#includeusing namespace std;

int main()

{ int t;

int c=0;

string s1,s2;

cin>>t;

while(t--)

{ c++;

cin>>s1;

cin>>s2;

int i,j;

int s1l=s1.length();

int s2l=s2.length();

vectorv;

for(i=0;i<=(s1l-s2l);i++)

{int count =0;

for(j=0;j

程式設計之美2015初賽A

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 兩個數a和 b a第一行為乙個數t,為資料組數。之後每組資料報含兩行。第一行為n,為集合s的大小。第二行為n個整數,表示集合內的數。對於每組資料輸出一行,形如 case x y x為資料編號,從1開始,y為最大的子集的大小。1 ...

程式設計之美初賽B

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 小冰是個八卦的人,最近她對乙個社交 很感興趣。由於小冰是個機械人,所以當然可以很快地弄清楚這個社交 中使用者的資訊啦。她發現這個社交 中有n個使用者,使用者和使用者之間可以進行互動。小冰根據使用者之間互動的次數和內容判斷每對使用...

程式設計之美初賽第二場

problem a 一邊輸入邊一邊維護殘留網路,然後跑isap。小資料過了,大資料tle。據說可以bfs預處理 層次網路。可以過。view code include include include include using namespace std const int inf 10000000 ...