看到的乙個面試題。有很多人已經寫過,在此記下,明天給出拓展。
題目:輸入乙個整型陣列,陣列裡有正數也有負數,陣列中連續的乙個或多個整數組成為子陣列,求有最大和的子陣列。要求:時間複雜度o(n)。
**如下:
#include using namespace std;
int main(void)
; int size = sizeof(a) / sizeof(int);
int result = max_subarr(a, size);
cout << result << endl;
return 0;
}int max_subarr(int a, int size)
else
sum = sum > k ? sum : k;
} return sum;
}
子陣列最大和
設sum i 為以第i個元素結尾且和最大的連續子陣列。假設對於元素i,所有以它前面的元素結尾的子陣列的長度都已經求得,那麼以第i個元素結尾且和最大的連續子陣列實際上,要麼是以第i 1個元素結尾且和最大的連續子陣列加上這個元素,要麼是只包含第i個元素,即sum i max sum i 1 a i a ...
子陣列最大和
思路 隨機產生5個數存在陣列a裡,定義陣列b來儲存子陣列的和,求和先求以第乙個隨機數開頭的所有情況,再求以第二個數開頭的所有情況,以此類推,例如 隨機數為1,2,3,4,5 先求 1,2,3,4,5 1,2,3,4 1,2,3 1,2這幾個子陣列的和,然後繼續求 2,3,4,5 2,3,4 2,3以...
《子陣列最大和》
1 源 1 include2 using namespace std 3 define n 1000045 int max int a,intb 6 12if a b a 0 13 16if a b a a b b 1720 return y 21 22 23int select int a,int...