由桌球隊問題想到的

2021-06-16 04:09:23 字數 1084 閱讀 7493

問題**

問題描述

兩個桌球隊進行比賽,各出3個。甲隊為 a、b、c 3人,乙隊為 x、y、z 3人。已抽籤決定比賽名單。有人向隊員打聽比賽的名單,a說他不和x比,c說他不和x、z比,請程式設計序找出3對賽手的名單。

之所以拿這個題目來講,是因為有些鬱悶——如此簡單的題目竟然耗費了我相當長的一段時間。

咋看這道題目,腦子裡無非是窮舉、列表等想法……然後使用了兩層的for迴圈對每個隊員進行匹配,想草草了事,但可惜只窮舉出了一對一(one vs one)的所有可能。

顯然這不是題目所要求的。

做到這裡有點鬱悶,腦子裡開始浮想出陣列、遞迴函式之類的概念……

然後開始搜尋網路上天花亂墜的答案,看到了各種各樣的解法,用到了各種各樣的知識點:陣列、字串……

最後還是被心裡乙個尖銳的聲音喊住了——不對!!!雖然陣列甚至遞迴函式這些東西的確是可以完成這道題目,但不應該是這樣子的!——因為既然這道題目扔在這章的後面,顯然它不需要用到後面的那些知識。——既然如此,那就應該有只依靠簡單的變數型別、邏輯語句以及本章主打的迴圈控制組成的解法就可以完成它!——但,到底是什麼呢?

於是在紙上列出了兩種形式的表

abc

x 011

y 110

z 110

上面這個表出現了和我一開始寫的演算法一樣的結果——各個隊員可能的對手,但沒有得出乙個整體的比賽次序。

然後我又嘗試做了另一種列表,並將不符合要求的組合去掉——於是答案出來了:

abc

xyz 

xzy 

yxz 

yzx 

zxyzyx 

a的對手是z,b的對手是x,c的對手是y。而演算法也顯而易見——窮舉出abc(順序固定)對應對手的全部組合,再依題意判斷即可!

問題答案

忽然有一種做小學奧數題的感覺——用簡單的知識解決複雜的題——需要一條很清晰的思路……

由PageRank想到的

首先來看看什麼是pagerank pagerank 技術 通過對由超過 50,000 萬個變數和 20 億個詞彙組成的方程進行計算,pagerank 能夠對網頁的重要性做出客觀的評價。pagerank 並不計算直接鏈結的數量,而是將從網頁 a 指向網頁 b 的鏈結解釋為由網頁 a 對網頁 b 所投的...

由Cannot find file 想到的

記錄一下 今天除錯程式,單步真機除錯,我日,程式一步一步走,盡然和程式根本就對不上號。特別奇怪。思考一下,應該是工程太多太雜,自己有不小心,讓它們混在一起打架了。於是繼續,把其它所有工程都關了,只開啟乙個,清理了所有工程。與此工程有關的直接搜尋清理,一直以來覺得沒有必要,但這次是為了保險起見。編譯工...

由VBA想到的

這段時間由於工作原因研究了一下 vba,感覺完全是如墜五里霧中,主要原因是對 atl乃至對 com技術的應用不了解。簡單說一下 vba,用過 office 系列軟體的朋友都知道它,用 vb語法來控制文件生成過程,很不錯。不只是 office,很多其它優秀軟體都有 vba模組,比如 autocad 這...