用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。