当前位置:首页 » 编程语言 » 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个属性,而且必须按权值顺序排序。另外一个表是已经寻过路的格子。讲起来有点复杂,但做起来不是太难。网络一下吧。