關(guān)鍵路徑算法(critical path method,CPM)是一種網(wǎng)絡(luò)分析技術(shù),它在項(xiàng)目網(wǎng)絡(luò)圖的基礎(chǔ)上,從規(guī)定的開(kāi)始日期開(kāi)始,利用從左到右的正向推導(dǎo)法計(jì)算出網(wǎng)絡(luò)圖中每個(gè)活動(dòng)的最早開(kāi)始和最早結(jié)束日期,再?gòu)囊?guī)定的完成日期(通常是正向計(jì)算得到的最早完成日期)開(kāi)始,利用從右到左的逆向推導(dǎo)法計(jì)算出網(wǎng)絡(luò)圖中每個(gè)活動(dòng)的最晚結(jié)束和最晚開(kāi)始日期,通過(guò)比較網(wǎng)絡(luò)圖中每個(gè)活動(dòng)的最早開(kāi)始、最早結(jié)束和最晚開(kāi)始、最晚結(jié)束日期,確定各個(gè)活動(dòng)的時(shí)差情況,如果某條線路上所有活動(dòng)的時(shí)差都為零,該條路徑即為關(guān)鍵路徑,而時(shí)差不為零的路徑稱為非關(guān)鍵路徑。
創(chuàng)新互聯(lián)提供高防主機(jī)、云服務(wù)器、香港服務(wù)器、IDC機(jī)房托管等
#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
{
//查找方法,參數(shù),文件絕對(duì)路徑,查找關(guān)鍵字
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"));
}
}
修改了下,加兩個(gè)變量,可以指出查找的位置。
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.File;
public class search
{
//查找方法,參數(shù),文件絕對(duì)路徑,查找關(guān)鍵字
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"));
}
}
這個(gè),查漢字是沒(méi)有問(wèn)題的。
另外,你要全文檢索的話,indexOf()還有個(gè)方法,indexOf(int start,String key),指定開(kāi)始查找的位置跟關(guān)鍵字,你查到一處后,將這個(gè)數(shù)值加1,做為繼續(xù)查找的開(kāi)始位置就可以了。