国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

程序員的算法趣題Q46: 唯一的OX序列

y1chuan / 2225人閱讀

摘要:可以在遍歷所有矩陣時(shí),對(duì)各種出現(xiàn)的次數(shù)進(jìn)行計(jì)數(shù),最后計(jì)數(shù)值為的個(gè)數(shù)即為所求結(jié)果。上一篇排序交換次數(shù)的最少化排序交換次數(shù)的最少化本系列總目錄參見(jiàn)程序員的算法趣題詳細(xì)分析和全解程序員的算法趣題詳細(xì)分析和全解

目錄

1. 問(wèn)題描述

2. 解題分析

3. 代碼及測(cè)試

4. 后記


1. 問(wèn)題描述

?????????當(dāng)n=4時(shí),像上述例子一樣,根據(jù)統(tǒng)計(jì)結(jié)果重新排列O和X的位置,只有一種排列方式的O和X的排列一共有多少種呢?

2. 解題分析

????????因?yàn)槭菍?duì)O計(jì)數(shù),可以用1代表O,用0代表x,這樣原矩陣就轉(zhuǎn)化為一個(gè)二進(jìn)制矩陣。

????????以下采用暴力搜索法。

????????對(duì)N*N的所有可能的二進(jìn)制矩陣進(jìn)行N行和N列的,所得的2*N個(gè)值形成的排列{r1_sum, r2_sum, …,rN_sum, c1_sum, c2_sum, …, cN_sum }構(gòu)成這個(gè)矩陣的signature。然后查詢值對(duì)應(yīng)唯一的矩陣的signature的個(gè)數(shù)。可以在遍歷所有矩陣時(shí),對(duì)各種signature出現(xiàn)的次數(shù)進(jìn)行計(jì)數(shù),最后計(jì)數(shù)值為1的signature個(gè)數(shù)即為所求結(jié)果。signature出現(xiàn)的次數(shù)可以用哈希表來(lái)存儲(chǔ),在python中就是dict()。

????????N*N的所有可能的二進(jìn)制矩陣種類數(shù)為 , N=4時(shí)為65536,隨著N增大急劇增大。

????????算法流程如下所示:

?

?

3. 代碼及測(cè)試

# -*- coding: utf-8 -*-"""Created on Wed Sep 29 07:51:03 2021@author: chenxy"""import sysimport timeimport datetimeimport math# import randomfrom   typing import List# from   queue import Queuefrom   collections import dequeimport itertools as itimport numpy as npN = 4sigCount = dict()tStart = time.perf_counter()for node in it.product([0,1],repeat=N**2):    a = np.array(node).reshape(N,N)    # print(a)    col_sum = np.sum(a,axis=0)    row_sum = np.sum(a,axis=1)    sig = tuple(np.concatenate((col_sum,row_sum)))    if sig in sigCount:        sigCount[sig] += 1    else:        sigCount[sig]  = 1count = 0for key in sigCount:    if sigCount[key] == 1:        count += 1tCost = time.perf_counter() - tStartprint("N = {0}, count={1}, tCost = {2:6.3f}(sec)".format(N,count,tCost))   

????????運(yùn)行結(jié)果:N = 4, count=6902, tCost = ?0.891(sec)

4. 后記

????????有兩個(gè)可能改進(jìn)方案:

  1. 用二進(jìn)制的形式來(lái)表示矩陣,以位操作的方式實(shí)現(xiàn)行和以及列和計(jì)算
  2. 矩陣中任意一個(gè)子矩陣的4個(gè)頂點(diǎn)按對(duì)角線分為兩組,一組為全0、另一組為全1的情況下,很明顯可以構(gòu)成出和它所對(duì)應(yīng)相同的signature的不同矩陣,因此可以排除在搜索范圍之外

????????以后回頭來(lái)補(bǔ)上這些改進(jìn)解。

? ? ? ? 上一篇:Q45: 排序交換次數(shù)的最少化? ? ? ??

????????本系列總目錄參見(jiàn):程序員的算法趣題:詳細(xì)分析和Python全解

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/121664.html

相關(guān)文章

  • 序員算法趣題Q45: 排序交換次數(shù)最少化

    摘要:能以最少交換次數(shù)到達(dá)升序有序排列記為的數(shù)列記為就等價(jià)于從代表的節(jié)點(diǎn)在這張圖中到達(dá)對(duì)應(yīng)的節(jié)點(diǎn)的最短路徑長(zhǎng)度。上一篇質(zhì)數(shù)矩陣質(zhì)數(shù)矩陣下一篇唯一的序列本系列總目錄參見(jiàn)程序員的算法趣題詳細(xì)分析和全解程序員的算法趣題詳細(xì)分析和全解 目錄 1. 問(wèn)題描述 2. 解題分析 3. 代碼及測(cè)試 4. 后記 ...

    flybywind 評(píng)論0 收藏0
  • 序員算法趣題Q37: 翻轉(zhuǎn)7段碼(1)

    摘要:漢明距離可以用異或操作實(shí)現(xiàn)。這個(gè)問(wèn)題其實(shí)可以看作是,具有個(gè)節(jié)點(diǎn)的全連接無(wú)向圖,每條邊的權(quán)重值代表兩個(gè)節(jié)點(diǎn)所代表的數(shù)字的段碼顯示的二進(jìn)制表示之間的漢明距離。 目錄 1. 問(wèn)題描述 2. 解題分析 3. 代碼及測(cè)試 1. 問(wèn)題描述 ????????問(wèn)題:求把10個(gè)數(shù)字全部顯示出來(lái)時(shí),亮燈/滅...

    RdouTyping 評(píng)論0 收藏0
  • 序員算法趣題Q19: 朋友朋友還是朋友嗎?

    摘要:基于以上討論可得,本題求解流程如下所示代碼及測(cè)試運(yùn)行結(jié)果上一篇水果酥餅日下一篇異或楊輝三角形本系列總目錄參見(jiàn)程序員的算法趣題詳細(xì)分析和全解 目錄 1. 問(wèn)題描述 2. 解題分析 3. 代碼及測(cè)試 1. 問(wèn)題描述 ????????六度空間理論非常有名。大概的意思是1個(gè)人只需要通過(guò)6個(gè)中間人就...

    oogh 評(píng)論0 收藏0
  • 序員算法趣題Q43: 讓玻璃杯水量減半

    摘要:但是由于不能使用作為,所以將表示狀態(tài)的列表轉(zhuǎn)換為后再用作的。上一篇將牌洗為逆序下一篇糖果惡作劇本系列總目錄參見(jiàn)程序員的算法趣題詳細(xì)分析和全解 目錄 1. 問(wèn)題描述 2. 解題分析 2.1?節(jié)點(diǎn)狀態(tài)表示 ???????2.2?鄰節(jié)點(diǎn)搜索 ???????2.3?路徑歷史記憶以及判斷鄰節(jié)點(diǎn)是否在...

    chenjiang3 評(píng)論0 收藏0
  • 序員算法趣題Q39: 反復(fù)排序

    摘要:中的統(tǒng)一的終點(diǎn)是全白狀態(tài)。比如說(shuō),的第個(gè)數(shù)恰好是,它可以由根據(jù)題設(shè)規(guī)則重排而得。上一篇填充白色填充白色下一篇優(yōu)雅的地址本系列總目錄參見(jiàn)程序員的算法趣題詳細(xì)分析和全解程序員的算法趣題詳細(xì)分析和全解 目錄 1. 問(wèn)題描述 2. 解題分析 2.1??Naive Approach--正向全量搜索 ...

    gitmilk 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<