1. 程式人生 > 其它 >4.Android篇——如何android設定狀態列達到全屏半透明狀態

4.Android篇——如何android設定狀態列達到全屏半透明狀態

技術標籤:c++

8、最佳遊覽線路(Noi1994)
某旅遊區的街道成網格狀。其中東西向的街道都是旅遊街,南北向的街道都是林蔭道。由於遊客眾多,旅遊街被規定為單行道,遊客在旅遊街上只能從西向東走,在林陰道上則既可從南向北走,也可以從北向南走。阿龍想到這個旅遊區遊玩。他的好友阿福給了他一些建議,用分值表示所有旅遊街相鄰兩個路口之間的街道值得遊覽的程度,分值時從-100到100的整數,所有林陰道不打分。所有分值不可能全是負分。例如圖是被打過分的某旅遊區的街道圖:
在這裡插入圖片描述

阿龍可以從任一個路口開始遊覽,在任一個路口結束遊覽。請你寫一個程式,幫助阿龍找一條最佳的遊覽線路,使得這條線路的所有分值總和最大。
【輸入格式】

第一行是兩個整數M和N,之間用一個空格符隔開,M表示有多少條旅遊街(1≦M≦100),N表示有多少條林陰道(1≦M≦20001)。接下來的M行依次給出了由北向南每條旅遊街的分值資訊。每行有N-1個整數,依次表示了自西向東旅遊街每一小段的分值。同一行相鄰兩個數之間用一個空格隔開。
【輸出格式】
只有一行,是一個整數,表示你的程式找到的最佳遊覽線路的總分值
在這裡插入圖片描述

#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;//功德圓滿

}
錯誤原因:還是程式碼能力!!演算法分析出來了,不會實現!!!還要多做題!!!