4.Android篇——如何android設定狀態列達到全屏半透明狀態
阿新 • • 發佈:2021-02-02
技術標籤:c++
8、最佳遊覽線路(Noi1994)
某旅遊區的街道成網格狀。其中東西向的街道都是旅遊街,南北向的街道都是林蔭道。由於遊客眾多,旅遊街被規定為單行道,遊客在旅遊街上只能從西向東走,在林陰道上則既可從南向北走,也可以從北向南走。阿龍想到這個旅遊區遊玩。他的好友阿福給了他一些建議,用分值表示所有旅遊街相鄰兩個路口之間的街道值得遊覽的程度,分值時從-100到100的整數,所有林陰道不打分。所有分值不可能全是負分。例如圖是被打過分的某旅遊區的街道圖:
阿龍可以從任一個路口開始遊覽,在任一個路口結束遊覽。請你寫一個程式,幫助阿龍找一條最佳的遊覽線路,使得這條線路的所有分值總和最大。
【輸入格式】
【輸出格式】
只有一行,是一個整數,表示你的程式找到的最佳遊覽線路的總分值
#include<iostream> #include<cstdio> using namespace std; int a[200][23000]={0};//這個陣列用來存道路的分值 int main(){ int m,n,x,y,f,ans=0,sum=0; cin>>m>>n; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) cin>>a[i][j];//讀入資料 for(int i=1;i<=n;i++)//迴圈開始 { f=-1000000;//隨手賦了一個絕對最小值 for(int j=1;j<=m;j++) { f=max(a[j][i],f);//找到每一列的最大值 } if(f<0){//如果是負數,需要特殊考慮 ans=max(sum,ans);//但無論怎樣,先比較已經得到的值 //這裡比較是有必要的,因為你不知道你接受了這個負數後後面 //的資料能否挽回這次損失,比如這個負數的絕對值大於後面的 //正數值,那樣這個點就應該捨去 if (sum+f>0) sum+=f;//如果加了這個負數之後不是零,帶上 //因為求最大值肯定要帶上這個大於零的值 else sum=0;//否則就不走前面 } else { sum+=f;//如果不是負數,帶上 } } if(sum!=0) ans=max(ans,sum);//這裡是把最後的資料記錄 cout<<ans;//輸出 return 0;//功德圓滿
}
錯誤原因:還是程式碼能力!!演算法分析出來了,不會實現!!!還要多做題!!!