發文作者:Yi | 2008 07 30

ACM Q10684 – The jackpot

//  2008.07.30     Celia
//  Method: Dynamic Programming (DP)
//  Note: 最大連續和
#include <stdio.h>
#define N 10000

int array[N], sum[N];

int main()
{
    int i, n, max_sum;

    for( ; ; )
    {
        scanf("%d", &n);

        if(n == 0)
            break;

        //  初始化(開始時的和為0)
        sum[0] = 0;

        max_sum = 0;

        for(i = 1; i <= n; i++)
        {
            //  輸入第i個元素
            scanf("%d", &array&#91;i&#93;);

            //  如果加上前面可以得到較大的和,則加上前面
            if(sum&#91;i-1&#93; > 0)
                sum[i] = sum[i-1] + array[i];
            //  若加上前面反而比從自己開始往後加小,則不要加前面
            else
                sum[i] = array[i];

            //  更新最大值
            if(sum[i] > max_sum)
                max_sum = sum[i];
        }

        if(max_sum > 0)
            printf("The maximum winning streak is %d.\n", max_sum);
        else
            puts("Losing streak.");
    }

    return 0;
}
發文作者:aikosenoo | 2008 07 30

[技巧] 在WordPress張貼程式碼

WordPress好用的地方在於它可以直接張貼程式碼,不過沒有直接的按鈕可以按: P

方法如下:

在Visual模式下用如下的標籤–

[sourcecode language=’c’](這裡貼code)[/sourcecode]

記得要用打的,中間不要有多餘空格,比較不會出錯。

這樣就可以了~

 printf("Hello world!"); 
發文作者:aikosenoo | 2008 07 30

[演算法] 深度優先搜尋(DFS)

DFS,深度優先搜尋(Depth First Search)的簡稱,又稱為縱向搜尋法。



*什麼是DFS?
顧名思義,是以Depth,也就是深度為優先考量的一種搜尋法。所謂的搜尋法,在圖論
中,就是把所有的節點(node)走一遍的方法。

也就是我以走得深為優先考量,當遇到末端時,才走向其他的路。
請注意所謂走得深是指「比這層深」,而不是在於「哪條比較深」,所以只要是比自
己深的點就可以走。而且,在一個點上的時候,我們只會知道有跟它連接的路有哪些,
而不知道這些點通往哪裡。

深入閱讀…

發文作者:aikosenoo | 2008 07 30

ACM Q441 – Lotto

 深入閱讀...

分類