最優乘車 getchar 的困惑之解,最短路

2021-09-12 13:56:39 字數 1026 閱讀 3745

題目:自建oj,歡迎光臨)

分析:比如線路3 6 7 5,則3可以到達6,7,5,從而賦值f[3][6,7,5]=1,6可以到達7,5,從而賦值f[6][7,5]=1。下面就是最短路問題。

易困惑點:

寫好**後,在devc++上過了所有測試點,但提交oj後卻卡掉很多點,原因在於devc++把回車符與換行符當作換行符處理,而oj是分得很清楚的。

比如3 6 7 5

4 5用getchar()去讀入第一行,得到的是字元3,空格,字元6,空格,字元7,回車符(ascii碼為13),換行符(ascii碼為10)。

為了在devc++與oj上通用,採用以下**:

c=getchar();

if(c==13) c=getchar();

對於devc++,直接認為第一行**吸收的是換行符,從而不執行第二行**的主體。 

對於洛谷,或者hustoj,因為先吸收回車符,從而執行第二行**的主體而吸收掉換行符。

另外需要注意的是,檔案結束是eof。 

ac**:

#include#includeusing namespace std;

int m,n,a[501],f[501][501];

char c;

int main()

for(int i=1;i<=m;i++)

t++;

s=0;

while(c<='9' && c>='0')

a[t]=s;

while(c==13)/*回車鍵13*/

c=getchar();

/*換行鍵10,或者到了檔案結束標誌eof*/

if(c==10||c==eof)break;

}for(int j=1;jf[i][k]+f[k][j])

f[i][j]=f[i][k]+f[k][j];

if(f[1][n]==1e9)cout<<"no\n";

else cout

}

最優解問題的求解

1.一般來說題目中需要求解出最優解的問題,我們是可以使用普通遞迴,遞推,深度優先搜尋,記憶型的遞迴,貪心或者動態規劃來進行求解的 其中使用普通的遞迴或者深搜,遞推這些資料量較小的情況下求解速度還行,假如資料量相對大一點的情況下,而且節點的數量比較多,這個時候使用這些方法來解決往往會耗時比較大,有時候...

關於困惑已久的var self this的解釋

this.name name this.age age this.sayhello function this.saysomething function 詳見 var b1 new basetype wede 30 b1.saysomething my name is wede,and i m 3...

A 演算法可行解與最優解的偏離處

a 尋路初探 f g h g的計算依賴於來自每個格仔與相鄰8個方向格仔的距離d,文中不同格仔的d1 8相同。如果s到v的最短路徑g是準確的,那麼最終獲得的最短路徑就是準確的,因為終點的g就是所求的最短路徑。任何情況第一和第二個加入關閉列表的g都是準確的,即其v到s的最短路徑是最優解。第三個開始才有可...