T3:【NOIP2006PJ】Jam的計數法(count)

這是陳老師給出的幾個提示:字符串、搜索、模擬

題目傳送

嗯…這一道題是可以用搜索來做的,但是有的同學如果沒有學過或不掌握就會顯得很吃虧,

所以今天呢,我就講解一個大家 都懂的 —— 循環嵌套

首先呢,我們來解釋一下樣例:
2 10 5
b d f i j
可用的字符:
b c d e f g h i j
b x d x f x x i j
接下來繼續看最後一位能不能移動:
j 不能移動,再看 i;
i 後面被佔滿了,不能移動;
f 後面還有 g, h,能移動,
所以 f 移動至 g,
爲了字典序最小,所以後面的字符要對齊 g;
因此就得出了第一個:b d g h i;
後面同理,時間緊迫,就不解析了;

代碼就不復制啦 (20行,還闊以再壓

上僞代碼(跟真實代碼沒啥區別):

int main()in(s,t,w,str);    //如題目所說,字符區間,長度,字符
	for(i=1~5)   //要輸出5個字符串
		for(j=w-1~0)    //爲了字典序最小,所以先變後面的(別問我爲什麼,實在不行私聊)
			if(str[j]+1 <= 極限字符-(w-j))   //極限字符就是'a'+t的距離;w-j是j後面還有多少字符
				for(k=j+1~w) 更新後面的字符;
				輸出;退出;

本題就先講到這兒了,886!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章