[C++] 关键路径 →→→→→进入此内容的聊天室

来自 , 2019-08-26, 写在 C++, 查看 104 次.
URL http://www.code666.cn/view/cee8d6b7
  1. #include<stdio.h>
  2. int main(){
  3.         int i, j, p=0;
  4.         char graph[10][10]={{0,1,0,0,0,0,0,0,0,0},
  5.                                                 {0,0,1,0,0,0,0,0,0,0},
  6.                                                 {0,0,0,0,1,1,0,0,0,0},
  7.                                                 {0,0,0,0,0,1,0,0,0,0},
  8.                                                 {0,0,0,0,0,0,1,0,0,0},
  9.                                                 {0,0,0,0,0,0,0,1,0,0},
  10.                                                 {0,0,0,0,0,0,0,0,1,0},
  11.                                                 {0,0,0,0,0,0,0,0,1,0},
  12.                                                 {0,0,0,0,0,0,0,0,0,1},
  13.                                                 {0,0,0,0,0,0,0,0,0,0}};
  14.         int judge[10]={0};//辅助数组
  15.         int path[10];//路径数组
  16.         int flag=1;
  17.         while(flag != 0)
  18.         {      
  19.                 flag = 0;
  20.                 for(j=0;j<10;j++)
  21.                 {
  22.                         //如果没有找过,
  23.                         if(judge[j]!=-1)
  24.                         {
  25.                                 judge[j]=0;
  26.                                 for(i=0;i<10;i++)
  27.                                 {
  28.                                         //将j列的所有元素之和赋给judge[j]
  29.                                         judge[j]=judge[j]+graph[i][j];
  30.                                 }
  31.                         }
  32.                 }
  33.                 for(i=0;i<10;i++)
  34.                 {
  35.                         //如够judge[i],也就是该列元素之和为0
  36.                         //则该节点为根节点,并存放到path[]数组中,p后移
  37.                         if(judge[i]==0)
  38.                         {
  39.                                 path[p]=i;
  40.                                 p++;
  41.                                 //将列中有1的元素置为0;
  42.                                 for(int q=0;q<10;q++)
  43.                                         graph[i][q]=0;
  44.                                 judge[i]=-1;//是否已经找过
  45.                         }
  46.                 }
  47.            
  48.                 for(i=0;i<10;i++)
  49.                 {
  50.                         //如果没有找过,将flag赋值为1,重新查找
  51.                         if(judge[i]!=-1)
  52.                         {
  53.                                 flag = 1;
  54.                         }
  55.                 }
  56.                
  57.         }
  58.         printf("p关键路径为:");
  59.         for(i=0;i<10;i++)
  60.         {
  61.                 printf("%4d",path[i]);
  62.  
  63.         }
  64.         printf("\n");
  65.         return 0;
  66. }

回复 "关键路径"

这儿你可以回复上面这条便签

captcha