日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

SQL數據庫編程大賽(第一期)

系統 2342 0

本期題目:5X5方格棋盤難題
SQL數據庫編程大賽(第一期)
在5X5的方格棋盤中(如圖),每行、列、斜線(斜線不僅僅包括對角線)最多可以放兩個球,如何擺放才能放置最多的球,這樣的擺法總共有幾種?輸出所有的擺法。
要求: 用一句SQL實現。
輸出格式: 從方格棋盤第一行至第5行,每行從第一列到第5列依次輸出,0表示不放球,1表示放球。例如:1001000000000000000000000。一行輸出一個行號和一個解,按解所在的列字符串順序從大到小排序。

數據庫平臺: 適用Oracle、MS SQL Sever,版本(Oracle推薦10gr2(包含)以上版本、MS SQL Sever推薦2008版本)

原文見: http://www.itpub.net/thread-1400067-1-1.html

參賽者答案: http://www.itpub.net/thread-1407072-1-1.html

我提交的答案:

解題思路:

1、先將每行可以放2個棋子的排列組合全部列出,用union all生成記錄集。

2、用笛卡爾連接5個表,生成所有行滿足要求的排列組合(第行2個棋子)。

3、去除列和斜邊不滿足要求的記錄。

評委意見:

思路和代碼簡明,結果排序正確,性能良好,寫法直截了當,但未說明最大值=10的依據。既然已經預設了每行各有兩個球,可以推斷每列有且僅有兩個球,下面的列判斷可以改進為=2而不是<=2。

個人分析:

1、每行都肯定有2個棋子的假定是比較武斷的,扣分是應該的,除非自己先用算法或數學方法證明(應該可以證明,但我還不會)。

2、枚舉每行都有2個棋子的代碼比較難看,擴展性不好,可以改進(第二期改進了)。

3、用笛卡爾連接5個表,假如有行數不是5則需要修改SQL,擴展性不好。

4、SQL整體性能不錯,相對其他人的代碼簡單易懂。

5、沒有注釋,主要原因是自己認為代碼邏輯較簡單,評委肯定能看懂,最后還是被扣分了。

由于以上原因最后得分很低,我最喜歡是第3名(TK)的答題,大家有興趣可以看看。

SQL數據庫編程大賽(第一期)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 台湾省| 五华县| 水富县| 江陵县| 巍山| 巴彦淖尔市| 鸡东县| 高邮市| 霸州市| 美姑县| 明光市| 寿阳县| 安岳县| 瓦房店市| 隆尧县| 左贡县| 大余县| 甘孜| 稻城县| 当涂县| 屯门区| 平遥县| 萍乡市| 延安市| 进贤县| 诏安县| 巴青县| 梓潼县| 大关县| 江孜县| 富平县| 井研县| 临湘市| 南溪县| 古田县| 孟村| 疏勒县| 禄丰县| 眉山市| 伊金霍洛旗| 宝丰县|