請問如何構造n m稀疏度為0 4的矩陣,其中每個元素取值範圍為。我試了兩天沒有搞定

2021-04-08 22:49:30 字數 3810 閱讀 2284

1樓:匿名使用者

很好構造吧,有沒有要求矩陣的秩。

稀疏度為0.4,那麼n*m的矩陣共有0.4*n*m個非零元素的矩陣。

隨機的元素範圍在[-1,1]之間,需要使用電腦產生隨機數數列。假設要構造一個4*5矩陣,哪麼非零元素共有0.4*4*5=8個。

首先產生8個在[-1,1]之間的隨機數。

0.2309 0.4764 0.

5839 -0.6475 0.8338 0.

8436 -0.1886 -0.1795

構造一個4*5 的矩陣

0.2309 0 0 0 -0.1795

0 0.4764 0 0 -0.1886

0 0 0.5839 0 0.8436

0 0 0 -0.6475 0.8338

2樓:匿名使用者

你首先隨機生成n*m*0.6個不重複的在區間[0, n*m-1]的整數,然後根據這些整數,找到在矩陣中的位置。例如生成的整數為i,那麼它在矩陣中的位置就為(i / n -1, i % m).

將這些位置的數全部置0,然後掃描矩陣,對於矩陣中非零的位置,生成一個[-1,1]的數填充

c++題目 輸入是一個n*m的01矩陣,要求找到其中最大的全0字矩陣

3樓:匿名使用者

你**貼全了嗎?

為什麼下面的函式在裡主函式裡都沒有呼叫?

用你現在的程式雖然能過例子但是

給你個測試資料:

4 30 0 0

0 0 0

1 1 1

1 1 1

就有錯誤了~!

4樓:匿名使用者

這種問題最好把自己的思路說下,不然沒人能看懂你的**。

你這樣做肯定是不對的,這個題其實就是最大子矩陣,只不過把0的權設為1,1的權設為負無窮,這樣求出來的肯定是最大的全是0的矩陣,仔細看一下我得做法,用的是動態規劃。

順便問下你去**交的題?我也去看下

#include

const int max_int = 0xfffffff;

int map[ 301 ][ 301 ], opt[ 301 ], n, m, maxn;

void init( )

maxn = 0;

}void work( )}}

void print( )

int main( )

5樓:匿名使用者

對每個0元素定義其極大擴充套件矩陣

為按以下方法構造的矩陣:先向上擴充套件,直到遇到1或邊界,然後以剛剛得到的邊為基準向左右擴充套件,直到遇到1而不能擴充套件。

比如1 0

0 0中右下角的0的極大擴充套件矩陣為最右邊的一列,比如

1 0 0 0

0 0 0 1

0 0 0 0

中第二行左數第二列的0的極大擴充套件矩陣為第

一、二行中間的4個0。

可以證明最大的全0矩陣必為某個0元素的極大擴充套件矩陣:最大的全0矩陣(設為a)最上邊必定有一些1或邊界而導致這個矩陣不能再向上擴充套件,那麼在有1或邊界的列上,a中最下面一行的元素的極大擴充套件矩陣即為a。

比如1 0

0 0中右下角的0的極大擴充套件矩陣即為一個最大全0矩陣,比如

1 0 0 0

0 0 0 1

0 0 0 0

中第三行中間兩個0的極大擴充套件矩陣均為最大全0矩陣。

因此我們可以通過遍歷每個0元素的極大擴充套件矩陣來求得最大全0矩陣。對每個元素儲存l,r,h三個值,分別表示從該元素到其極大擴充套件矩陣最左邊一列的的距離、從該元素到其極大擴充套件矩陣最右邊一列的的距離、極大擴充套件矩陣的高度,可以通過遞推求得:

如果[i,j](表示從上往下數第i行、從左往右數第j列的元素,下同)=0,那麼

l[i+1,j]=min,

r[i+1,j]=min,

h[i+1,j]=h[i,j]+1,

否則l[i+1,j]=從[i,j]到左邊第一個1的距離,

r[i+1,j]=從[i,j]到右邊第一個1的距離,

h[i+1,j]=1。

最後只需要找出所有元素中(l+r+1)h最大的即可。它的極大擴充套件矩陣即為最大全0矩陣。

6樓:宋戈

using namespace std;

bool check(int,int,int);

int trr(int,int,int);

int a[301][301],n;

int main()

if (x>0) k=trr(i,j-x,j-1);

if (k>max) max=k;

while(a[i][j]==1&&j<=m) j++;

}while(j<=m);

} cout<1&&ans)

t=aa;ans=true;

while(t給你個測試資料:

4 30 0 0

0 0 0

1 1 1

1 1 1

就有錯誤了~!#include

const int max_int = 0xfffffff;

int map[ 301 ][ 301 ], opt[ 301 ], n, m, maxn;

void init( )

maxn = 0;

} void work( ) }

} void print( )

int main( )

{ init( );

work( );

print( );

return 0;

matlab中如何生成所有元素均為1的矩陣?

7樓:匿名使用者

matlab中生成所有元素均為1的矩陣的方法為:使用內建的ones()函式。下面給出具體專的示例:

1、在matlab的命令屬視窗輸入:ones(3) ,表示生成3行3列且所有元素均為1的矩陣 ,輸出結果如下:

2、在matlab的命令視窗輸入:ones(2,4) ,表示生成2行4列且所有元素均為1的矩陣,結果下圖所示:

3、為了演示ones()函式的第三種使用方式,在命令視窗輸入下面兩行**:

a = [1 2;3 4]

ones(size(a))

表示生成一個結構和a一樣,但是所有元素均為1的矩陣,輸出結果如下圖所示:

8樓:子衿悠你心

可以運用ones函式。

ones函式是matlab裡的內建函式,可以建立一個所有元素版全為1的矩陣。權

x = ones(n)產生一個n*n的所

有元素全為1的矩陣。

x = ones(m,n)產生一個m*n的所有元素全為1的矩陣。

舉例:生成一個4*4的所有元素都是1的矩陣

拓展:zeros函式可以建立一個元素全為0的矩陣,用法和ones相同。

x = ones(n)產生一個n*n的所有元素全為0的矩陣。

x = ones(m,n)產生一個m*n的所有元素全為0的矩陣。

eye函式可以建立對角線元素全為1的矩陣,即單位矩陣,用法和ones相同。

x = eye(n)產生一個n*n的單位矩陣。

x = eye(m,n)產生一個m*n的矩陣沿著對角線方向的元素均是1(從最左上角開始)。

9樓:qq號

ones(m,n)

生成m*n的矩陣,元素都是1

請問用手機安卓應用「百度地圖」進行導航,如何才能設定指標方向

在導航介面右下角有一個像汽車燈光往前照出去的圖示,點一下那個圖示。就可以轉換成指北模式 圖示會變成n 地圖導航的時候,有根紅線,請問是指北還是指南 紅線既不是指北,也不是指南,指向的是目標點。目的是直觀地提供當前位置和目標點之間的最短路徑 直線 幫助使用者觀察或分析當前的執行路線。應該是指向目的地的...

win7筆記本外接顯示器解析度如何調整為最佳狀態

連線外部顯示器後,預設是把外部顯示器作為主顯示器的複製顯示器,所以不管你怎麼設定,都只能達到你筆記本顯示器的解析度。所以你要將它們分開,設定成主 副顯示器。不知道你用的是a卡還是n卡,n卡的話我大概可以給你說怎麼設定。你要進入顯示卡的控制面板,一般筆記本右鍵選單會有快捷方式的,進去後,找到 設定多個...

請問放生要放幾次為宜,如何放生,放生有何講究?

如法,隨緣,誠敬放生,多多益善 隨喜讚歎仁者如法放生。吃素和放生是無畏佈施,果報是健康長壽 放生最好隨緣菜場刀下救命,不要預訂買物命,也最好不要去專門賣給放生人的販子那裡買。要充分考慮季節氣候,放生地點環境,和運輸等因素,把物命放去他們能活下去,沒有人捕抓的地方或活水和大湖裡,不要做複雜的儀軌。也不...