用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

关键路径

2017-12-14 作者: 柯侧耳倾听者举报

[c++]代码库

#include<stdio.h>
int main(){
    int i, j, p=0;
    char graph[10][10]={{0,1,0,0,0,0,0,0,0,0},
                        {0,0,1,0,0,0,0,0,0,0},
                        {0,0,0,0,1,1,0,0,0,0},
                        {0,0,0,0,0,1,0,0,0,0},
                        {0,0,0,0,0,0,1,0,0,0},
                        {0,0,0,0,0,0,0,1,0,0},
                        {0,0,0,0,0,0,0,0,1,0},
                        {0,0,0,0,0,0,0,0,1,0},
                        {0,0,0,0,0,0,0,0,0,1},
                        {0,0,0,0,0,0,0,0,0,0}};
    int judge[10]={0};//辅助数组
    int path[10];//路径数组
    int flag=1;
    while(flag != 0)
    {  
        flag = 0;
        for(j=0;j<10;j++)
        {
            //如果没有找过,
            if(judge[j]!=-1)
            {
                judge[j]=0;
                for(i=0;i<10;i++)
                {
                    //将j列的所有元素之和赋给judge[j]
                    judge[j]=judge[j]+graph[i][j];
                }
            }
        }
        for(i=0;i<10;i++)
        {
            //如够judge[i],也就是该列元素之和为0
            //则该节点为根节点,并存放到path[]数组中,p后移
            if(judge[i]==0)
            {
                path[p]=i;
                p++;
                //将列中有1的元素置为0;
                for(int q=0;q<10;q++)
                    graph[i][q]=0;
                judge[i]=-1;//是否已经找过
            }
        }
         
        for(i=0;i<10;i++)
        {
            //如果没有找过,将flag赋值为1,重新查找
            if(judge[i]!=-1)
            {
                flag = 1;
            }
        }
         
    }
    printf("p关键路径为:");
    for(i=0;i<10;i++)
    {
        printf("%4d",path[i]);
 
    }
    printf("\n");
    return 0;
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...