欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

數(shù)據(jù)結(jié)構(gòu)超市選址、最短路徑查詢、地址信息查詢-創(chuàng)新互聯(lián)

  1. 設(shè)計河北師范大學(xué)的校園平面圖,至少包括15個以上的地點,每兩個地點間可以有不同的路,且路長可能不同。以圖中頂點表示校內(nèi)各地點,存放名稱、代號、簡介等信息;用邊表示路徑,存放路徑長度等相關(guān)信息。

2.提供圖中任意地點相關(guān)信息的查詢。

郊區(qū)網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),郊區(qū)網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為郊區(qū)成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的郊區(qū)做網(wǎng)站的公司定做!
  1. 提供圖中任意地點的問路查詢,即查詢?nèi)我鈨蓚€地點之間的一條最短路徑。

  2. 學(xué)校要新建一間超市,請為超市選址,實現(xiàn)總體最優(yōu)。注意要考慮各地點距離超市的遠(yuǎn)近,以及大家去超市的頻度不同。

#include#include#define N 16 //圖的頂點的數(shù)量

typedef struct place{char* name;//名稱
    int codename;//代號
    char* introduction;//簡介
    double frequncy;//去超市的頻率
}place,mall;//創(chuàng)建地點
//place---buildings

typedef struct path{int length;
    char pathName[10];
    int start;//開始節(jié)點的坐標(biāo)
    int finish;
    int turn[N];
    int index;
}path;



typedef struct Map{//	place p[N+1];//頂點的類型
	path arcs[N+1][N+1];//distance from one to another
	int vernum,arcnum;

}Map;

//給圖加入路徑長度
void initMap(Map *mapp,int distance,int start,int finish){mapp->arcs[start][finish].length=distance;
    mapp->arcs[finish][start].length=distance;
}
void initplace(place *p,int codename,char name[10],char introduction[100],double fre){p->name=name;
    p->codename=codename;
    p->introduction=introduction;
    p->frequncy=fre;
}

void initfrequency(place *p,double e){p->frequncy=e;
}
void printMap(Map p){printf("the Adjacency matrix is as follows");
    int i,j;
    for(i=0;ifor(j=0;j//遍歷以上的二維矩陣
            if(p.arcs[i][j].length==-1){printf("#\t");
            }else{printf("%d\t",p.arcs[i][j]);
            }

        }
        printf("\n");
    }


    printf("The adjacency matrix is printed successfully\n");
    printf("the num of paths in the map is %d \n",p.arcnum);
    printf("the num of places in this map is %d\n",p.vernum);
}
// mappp.arcs[k][j]是最原始的鄰接矩陣
void flody(Map mappp,int newmap[N][N])
{int k, i, j;
	for (k = 1; k<= N; k++)//在n個結(jié)點中依次找中轉(zhuǎn)站;
	{for (i = 1; i<= N; i++)
		{	for (j = 1; j<= N; j++)
			{	    newmap[i][j]=mappp.arcs[i][j].length;
			    if(mappp.arcs[i][k].length<1000&& mappp.arcs[k][j].length<1000){//如果中轉(zhuǎn)點存在


                    if (mappp.arcs[i][j].length >mappp.arcs[i][k].length + mappp.arcs[k][j].length)//如果直接從i到j(luò)的距離大于從i到k再到j(luò)的距離,即找到一個合適的中轉(zhuǎn)站,就更新地圖;
                    {mappp.arcs[i][j].length = mappp.arcs[i][k].length + mappp.arcs[k][j].length;
                        newmap[i][j]=mappp.arcs[i][j].length;
                    }
				}
			}
		}
	}
	//對角線元素是0
	for (int i=1; i<=N; i++)
    {for (int k=1; k<=N; k++)
        {if (i==k)
            {newmap[i][k]=0;
            }
        }
    }

}


int main()
{//4-------4
    double weigh;
    double minpp;
    int mallp;
    int mall,dis,start4;
    double w[N+1];
    //4-----------4
    //1-----------------1
     int i,start,finish;
    double j;
    place placep[N+1];
    //1----------------------1
        int placenum;
        //3-------------------3
            int newmap[N][N];
            int minp,minum,cnt,f;
              int n;
              int startp,finishp,turn; int pathp[N];

    //1.設(shè)計平面圖
    //1.1創(chuàng)建地點的結(jié)點
    //各個地點的信息組成的數(shù)組
    //initplace(placep[1],1,'qizhi1','grilshome');initplace(placep[2],2,'qizhi2','girlshome');initplace(placep[3],3,'qizhi3','girlshome');

    for(i=1;i<=N;i++){j=0.0;
        initplace(&placep[i],i,"name","introduction",j);
    }
    Map mapp;

    //鄰接矩陣的初始化操作
    for(start=1;start<=N;start++){for(finish=1;finish<=N;finish++){mapp.arcs[start][finish].length=-1;
        }
    }

        for(i=1;i<=N;i++){for(j=1;j<=N;j++){initMap(&mapp,0x3f3f3f3f,i,j);
        }
    }
     //1.2創(chuàng)建路徑
   initMap(&mapp,6,1,9);initMap( &mapp,7,9,15);initMap( &mapp,4,1,8);initMap(&mapp,1,7,8);initMap( &mapp,4,7,11);
    initMap(&mapp,2,7,12);initMap(&mapp,6,1,6);initMap(  &mapp,1,1,2);initMap(&mapp,3,2,3);initMap( &mapp,2,3,5);
    initMap(&mapp,4,3,4);initMap( &mapp,2,5,13);initMap(&mapp,6,4,14);initMap(&mapp,4,4,10);initMap(&mapp,1,10,14);
    initMap(&mapp,6,9,1);initMap( &mapp,7,15,9);initMap( &mapp,4,8,1);initMap(&mapp,1,8,7);initMap( &mapp,4,11,7);
    initMap(&mapp,2,12,7);initMap(&mapp,6,6,1);initMap(  &mapp,1,2,1);initMap(&mapp,3,3,2);initMap( &mapp,2,5,3);
    initMap(&mapp,4,4,3);initMap( &mapp,2,13,5);initMap(&mapp,6,14,4);initMap(&mapp,4,10,4);initMap(&mapp,1,14,10);
    initMap(&mapp,6,1,16);initMap(&mapp,6,16,1);
//    2.1 相關(guān)信息的查詢操作
    printf("現(xiàn)在進入查詢,請輸入想要查詢的地址代號,(輸入范圍是%d~%d)\n",1,N);

    scanf("%d",&placenum);
    printf("您查詢的地點代號是%d,名稱是%s,簡介是%s,去超市的頻率是%f",placep[placenum].codename,placep[placenum].name,placep[placenum].introduction,placep[placenum].frequncy);

    //3.1問路查詢

    printf("現(xiàn)在進入問路查詢界面,請您按照2 4的形式輸入起點和終點的地址代號 (輸入范圍是%d~%d)比如4 14\n",1,N);
    //輸入1、 2、 3 ~ N之類的代號
    flody(mapp,newmap);

   //存放最短路徑

    turn=0;

    n=N;
    while(n)
        {pathp[n--]=0;}
    scanf("%d %d",&startp,&finishp);
    printf("從地點%d到地點%d的最短路徑為%d\n",startp,finishp,newmap[startp][finishp]);
    printf("路徑如下所示:\n");

    minp=100;//尋找最短路,先假設(shè)這條路徑長度大,經(jīng)過每一個點后更新長度,最后長度等于最短路
    minum;
    cnt=2;
    f=startp;//f是已經(jīng)確定的最短路經(jīng)過的點,在f的鄰接點中找到點minum,使得newmap[first][f]+map[f][minum]+newmap[minnum][last]=最短路
    while(minp>=newmap[startp][finishp])
    {for (i=1;i<=N;i++)
        {if ((newmap[startp][f]+mapp.arcs[f][i].length+newmap[i][finishp])<=minp){minum=i;
                minp=newmap[startp][f]+mapp.arcs[f][minum].length+newmap[minum][finishp];

            }
        }
        f=minum;
        pathp[cnt++]=minum;
        if (minum==finishp){break;
        }
    }
    printf("%d ",startp);

    pathp[cnt]=finishp;
    for(i=1; iif (pathp[i]!=pathp[i-1] && pathp[i]!=0)
        {printf("%d ",pathp[i]);
        }
    }
    printf("\n");

//    printf("%d\n",mapp.arcs[startp][finishp].index);
//    printf("%d\n",mapp.arcs[startp][finishp].turn[mapp.arcs[startp][finishp].index]);
//    if(mapp.arcs[startp][finishp].turn[mapp.arcs[startp][finishp].index]!=0)//當(dāng)有中轉(zhuǎn)點的時候
//    {//        printf("%d-->",startp);
//        for(int i=1; i//            printf("%d",mapp.arcs[i][finishp].turn[mapp.arcs[i][finishp].index]);
//            if( i<=mapp.arcs[startp][finishp].index ) printf("-->");
//
//        }
//        printf("%d",finishp);
//    }
//    else{//        printf("%d-->%d",startp,finishp);
//    }
//    printf("\n");

//之前寫的place placep[N+1];//各個地點的信息組成的數(shù)組
    //4.1超市選址
    initfrequency(&placep[6],0.9);
    initfrequency(&placep[2],0.1);

    for(mall=1;mall<=N;mall++){w[mall]=0;};


    for(mall=1;mall<=N;mall++){weigh=0;//mall是新超市的所在建筑的代號
        for(start4=1;start4<=N;start4++){dis=newmap[start4][mall];
                if(start4==mall) dis=0;
                weigh+=dis*placep[start4].frequncy;
//                printf("%lf %d %d %lf\n",placep[start].frequncy,mall,dis,weigh);

        }
        w[mall]=weigh;
       // printf("%lf\n",w[mall]);

    }

    mallp=1;
    minpp=w[mallp];
    for(int i=1;i<=N;i++){if(minpp>w[i]){minpp=w[i];
            mallp=i;
        }

    }
printf("超市建在代號為%d的位置最好",mallp);

system("pause");

    return 0;

}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站名稱:數(shù)據(jù)結(jié)構(gòu)超市選址、最短路徑查詢、地址信息查詢-創(chuàng)新互聯(lián)
新聞來源:http://chinadenli.net/article0/dsehoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、網(wǎng)站策劃、企業(yè)建站ChatGPT、面包屑導(dǎo)航網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名