當前位置:首頁 » 編程語言 » 01矩陣最近距離c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

01矩陣最近距離c語言

發布時間: 2022-06-13 07:49:02

A. 創建一個m*n的01矩陣 完整的c語言程序

#include<stdio.h>
#include<math.h>
#include<time.h>
main(){
int **a;
int i,j,NR,NC;
printf("input row -- m value:\n");
scanf("%d",&NR);
printf("input column -- n value:\n");
scanf("%d",&NC);
a = (int **) malloc(sizeof(int *) * NR);
for (j=0;j<NR;j++){
a[j] = (int *) malloc(sizeof(int) * NC);
}
srand((unsigned)time(NULL));
for (j=0;j<NR;j++) for (i=0;i<NC;i++) {a[j][i] = rand()%2;}
for (j=0;j<NR;j++) {
for (i=0;i<NC;i++) printf("%d ",a[j][i]);
printf("\n");
};

}

B. C語言隨機 生成不重復的0,1 矩陣

效率不太高,lz參考一下吧

//created by onceway
#include <stdio.h>
#include <time.h>
#include <math.h>

#define N 8
#define R 3

int init_s(int *s, int n, int r)
{
int i ,j, k = 0;
if(n > pow(2, r)) //n不能大於2的r次方,否側無解
return 0;
srand(time(NULL));
for(i=0; i<n; i++)
{
for(j=0; j<r; j++) //隨機出一行數據
s[i*r+j] = rand() % 2;
for(j=0; j<i; j++) //判斷是否和已經生成的行重復
{
for(k=0; k<r; k++)
{
if(s[i*r+k] != s[j*r+k])
break;
}
if(r==k) //如果有重復
{
i--;
break;
}
}
}
return 1;
}

int main()
{
int a[N][R];
int rc, i, j;
rc = init_s(*a, N, R);
for(i=0; i<N; i++)
{
for(j=0; j<R; j++)
printf("%d ", a[i][j]);
putchar('\n');
}
return 0;
}

C. c語言 找出01矩陣中每行最長的連續1序列

#include<stdio.h>
int main()
{
int a[10][10],n1,n2,i,j,mark0,ken0,ken1,max,mark1,l=0;
scanf("%d %d",&n1,&n2);
for(i=0;i<n1;i++)
for(j=0;j<n2;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n1;i++)
{
max=0;
for(j=0;j<n2;j++)
{
if(a[i][j]==1)
{
mark0=j;
j++;
while(a[i][j]==1)
{
j++;
}
mark1=j;
l=mark1-mark0;
if(l>max)
{
ken0=mark0;ken1=mark1-1;
max=l;
}
}
l=0;
}
if(max==0)
printf("-1 -1\n");
else
printf("%d %d\n",ken0,ken1);
}
return 0;
}

D. 如何使用C語言編寫用歐幾里得度量Euclidian distance計算矩陣中兩行的距離

和在二維空間里A與B的距離d=√((xA-xB)^2+(yA-yB)^2)一樣,在一個m維歐幾里德空間里,兩點的距離定義為各維對應坐標值之差的平方和開平方。點C(x1,x2,...,xm)與點D(y1,y2,...,ym)的距離
d=√((x1-y1)^2+(x2-y2)^2+...+(xm-ym)^2)。
兩點之間直線距離最短

E. c語言:我們定義如下矩陣 1/1 1/2 1/3 1/2 1/1 1/2 1/3 1/2

F. 誰給我解釋一下 C語言中圖鄰接矩陣0 和1 是咋弄的 我沒看懂

1表示想通,0表示不相通。
這里是讓你理解。無向圖有對稱性。有向圖則沒有。

以後你做題題目會直接給你矩陣不是給你圖讓你生成。
後面你會學到>1的 ,那種要求最短路的就是有權值的了。

G. C語言怎麼實現一個二維隨機0,1矩陣

樓上怎麼還會有java的東西,不是用c語言寫嗎?試試這個:

#include"stdio.h"
#include"time.h"
#include"stdlib.h"

#defineN5//隨機矩陣行列數
#defineM1//第i行不超過1的個數

//隨機矩陣的創建
voidCreatMatrix(inttemp[N][N]){
inti,j;
for(i=0;i<N;i++){
for(j=0;j<N;j++){
temp[i][j]=rand()%2;
}
}
}

//矩陣的檢查
boolCheckMatrix(inttemp[N][N],inti){
intj,k;
intcount=0;
//檢測第i行1的個數
for(j=0;j<N;j++){
if(temp[i][j]){
count++;
}
}
if(count>=M){
returnfalse;
}else{
count=0;
}

//檢測第i列1的個數
for(j=0;j<N;j++){
if(temp[j][i]){
count++;
}
}
if(count>=M){
returnfalse;
}else{
returntrue;
}
}

intmain(){
inti,j;
inta[N][N];
srand((int)time(NULL));
CreatMatrix(a);
while(!CheckMatrix(a,3)){
CreatMatrix(a);
}

for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("%d",a[i][j]);
}
printf(" ");
}
}

運行結果:測試數據是5*5的矩陣,第3行和第3列1的個數不能超過1個,也就是全為0:

H. 用c語言實現尋找最短距離的問題,照片是個例子,問題就是從x城市到y城市,如何給出最短距離的路線,這

單源最短路徑問題,用Dijkstra演算法求解。圖的存儲結構,有鄰接矩陣和鄰接表兩種,鄰接矩陣佔用空間大,但是使用方便。這里就說一下鄰接矩陣:

structGraph{
intmatrix[N][N];
inte;
};

N表示頂點數,就這幅圖而言是5,e表示邊數。matrix存儲了頂點之間的距離,比如matrix[0][1]表示頂點0到頂點1之間的距離。matrix[n][n]表示一個頂點到它自己的距離,這個應當設為0。另外,若兩個頂點之間沒有邊,應該用一個值(可以是負數)來標識它,這兩項操作,應該在圖的初始化時進行。

創建圖之後,首先要輸入邊數,然後輸入每條邊的起點、終點和長度,來給數組matrix賦值。

然後就是使用演算法了。

參考:http://www.cnblogs.com/dolphin0520/archive/2011/08/26/2155202.html

I. C語言:0-1矩陣

#include<stdio.h>
main()
{inta[100][100],n,m,i,j,b[6];
scanf("%d,%d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++){
b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;
if(a[i][0]=1){b[0]=1;b[1]=0;}
elseb[0]=0;
for(j=1;j<m;j++){
if(a[i][j]==1)
b[0]++;
else
b[0]=0;
if(a[i][j-1]==0&&a[i][j]==1)b[1]=j;
if(a[i][j]==1&&a[i][j+1]==0)b[2]=j;
if(b[0]>b[3]){b[3]=b[0];b[4]=b[1];b[5]=b[2];}
if(b[3]==0){b[4]=-1;b[5]=-1;}
}
printf("%d%d ",b[4],b[5]);
}
}

如圖所示,望採納。。。。。。

J. 25格迷宮的0-1矩陣為00100 01010 01100 00110 11010,求c語言解出一條通過迷宮的路徑。

你這個題意表述得不是很完整。首先,這個迷宮的出口和入口坐標分別是哪個?也就是迷宮的起點和終點在哪?第二,行走的規則是什麼?是只能橫豎走?還是也可以斜著走。
然後像這類的尋路有一種很好的演算法叫A*尋路演算法,你可以自己網路一下。大致的思路是從起點開始,維護兩個表。第一個表是下一步可以到達的格子屬性表,這個表中每個格子至少要有權值(也就是預計離目標遠近的值)和父節點2個屬性,而且必須按權值順序排序。另外一個表是已經尋過路的格子。講起來有點復雜,但做起來不是太難。網路一下吧。