當前位置:成語大全網 - 新華字典 - 有壹個java題需要解答

有壹個java題需要解答

足夠聰明。。。這是奧數題,不是java題,挺有意思,應該有簡便方法

這麽久了沒人提出個思路,我自己想了個思路,完全可行但是可能略微麻煩

思路:假如有n個字符,那麽每兩個字符直接都有壹個大小關系,總***有n*(n-1)個關系。比如說bad,b>a,b<d,a<b,a<d,d>b,d>a這6個關系,其中b>a跟a<b是同壹個關系,所以去掉後剩下b>a,b<d,a<d這三個關系n*(n-1)/2。因為妳要的是遞增,所以b>a不滿足,b<d和a<d滿足,所以可以認為關系b>a是錯誤的,另外兩個是正確的。甲要贏,就必須達到所有關系是正確的,所以必須刪除單個字母關聯關系錯誤最多的那個字母。比如說b,有兩個關系:b>a:錯誤,b<d:正確。就是說b的所有關系中錯1對1。同理,a的關系b>a錯誤,a<d正確。a的所有關系中也是錯1對1,而d的關系就是都對的。甲為了贏,就得刪除相關聯的關系錯誤最多的字符。這裏a和b都是錯1對1,而d是對2。所以a和b任意刪除壹個,甲就贏了。而乙則相反,應該刪除對的關系最多的那個字符,這裏就是d對2,刪了乙就贏了。這就是最聰明的刪除方法。

程序具體做法:建立壹個關系的class,裏面有三條屬性,壹是第壹個字母,二是第二個字母,三是關系的對錯。

然後妳輸入n個字符,就建立n*(n-1)/2個關系,通過循環和判斷寫入屬性。

刪除的時候自己決定下誰先刪(這個隨妳高興),刪壹個字母就刪掉所有該字母相關聯的關系。甲通過循環判斷當前字母中誰的關系是錯誤最多的,刪掉該字母和所有該字母相關的關系,然後乙繼續,刪除正確的最多的字符和所有相關關系。最後判斷不用我說了吧