关键路径算法(critical path method,CPM)是一种网络分析技术,它在项目网络图的基础上,从规定的开始日期开始,利用从左到右的正向推导法计算出网络图中每个活动的最早开始和最早结束日期,再从规定的完成日期(通常是正向计算得到的最早完成日期)开始,利用从右到左的逆向推导法计算出网络图中每个活动的最晚结束和最晚开始日期,通过比较网络图中每个活动的最早开始、最早结束和最晚开始、最晚结束日期,确定各个活动的时差情况,如果某条线路上所有活动的时差都为零,该条路径即为关键路径,而时差不为零的路径称为非关键路径。
创新互联提供高防主机、云服务器、香港服务器、IDC机房托管等
#include iostream #include cstdio using namespace std; int n,m,w[1001][1001],prev[1001],queue[1001],Time[1001],l=0,r=0,Pos[1001],path[1001]; void init() { int i,a,b,c; scanf("%d%d",n,m); for (i=1;i=m;i++) { scanf("%d%d%d",a,b,c); w[a][b]=c; prev[b]++; } } inline void Newq(int v) { r++; queue[r]=v; } inline void Del(int v) { int i; for (i=1;i=n;i++) if (w[v][i]) { prev[i]--; if (!prev[i]) Newq(i); } } void topo() { for (int i=1;i=n;i++) if (!prev[i]) Newq(i); while (rn) { l++; Del(queue[l]); } } void crucialpath() { int i,j; memset(Time,0,sizeof(Time)); for (i=1;i=n;i++) for (j=1;j=n;j++) if ((w[j][queue[i]]) (Time[j]+w[j][queue[i]]Time[queue[i]])) { Time[queue[i]]=Time[j]+w[j][queue[i]]; Pos[queue[i]]=j; } } void print() { printf("%d\n",Time[n]); int i=n,k=0; while (i!=1) { k++; path[k]=i; } for (i=k;i1;i--) printf("%d ",path[i]); printf("%d\n",path[1]); } int main() { init(); topo(); crucialpath(); print(); return 0; }
c++的 你凑合用下?
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.File;
public class search
{
//查找方法,参数,文件绝对路径,查找关键字
public static boolean search(String filepath,String key)
{
try
{
File f = new File(filepath);
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = "";
//int i = 1;
while((s = br.readLine()) != null)
{
if(s.indexOf(key) != -1)
{
return true;
}
}
return false;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}
public static void main(String args[])
{
System.out.println(search.search("d://t.txt","l2"));
}
}
修改了下,加两个变量,可以指出查找的位置。
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.File;
public class search
{
//查找方法,参数,文件绝对路径,查找关键字
public static String search(String filepath,String key)
{
try
{
File f = new File(filepath);
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = "";
int i = 1;
int m = 0;
while((s = br.readLine()) != null)
{
if((m = s.indexOf(key)) != -1)
{
return "第"+i+"段,第"+m+"处";
}
i++;
}
return null;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
public static void main(String args[])
{
System.out.println(search.search("d://t.txt","asd"));
}
}
这个,查汉字是没有问题的。
另外,你要全文检索的话,indexOf()还有个方法,indexOf(int start,String key),指定开始查找的位置跟关键字,你查到一处后,将这个数值加1,做为继续查找的开始位置就可以了。