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卡的話我大概可以給你說怎麼設定。你要進入顯示卡的控制面板,一般筆記本右鍵選單會有快捷方式的,進去後,找到 設定多個...
請問放生要放幾次為宜,如何放生,放生有何講究?
如法,隨緣,誠敬放生,多多益善 隨喜讚歎仁者如法放生。吃素和放生是無畏佈施,果報是健康長壽 放生最好隨緣菜場刀下救命,不要預訂買物命,也最好不要去專門賣給放生人的販子那裡買。要充分考慮季節氣候,放生地點環境,和運輸等因素,把物命放去他們能活下去,沒有人捕抓的地方或活水和大湖裡,不要做複雜的儀軌。也不...