My First Blog on cnblogs (现代程序设计 Homework-01)
Hello CNBLOGS!Hello Everyone!
這是我的第一篇blog,所以這也是一篇試驗性的blog。
這個學期我和很多同學一樣選修了鄒欣老師的現代程序設計這門專業課。第一次看到使用GitHub、寫博客這樣高大上的作業要求,我感覺很興奮也很有壓力。也希望能在這門課上通過自己的努力,取得更多的收獲和更大的進步。
這里要說明一點:“第一次作業的截止日期是9月20號”,可是這個消息發布的時候卻恰逢中秋佳節,我和不少同學一樣都不在學校。而當我22號回來的時候才發現了“遲交作業者一律0分”的這個悲情消息。
助教學長:第一次的作業確實不是本人故意不交,實在是事出有因,所以在此向您表示道歉,希望您能原諒。不奢求能加回什么分數,但求把情況說明,以后避免這類問題再次發生。
?
那么現在補完成第一次作業的內容:
1、個人信息 學號11061036 GitHub帳號:ElendirChen 博客園 個人頁面網址:http://www.cnblogs.com/elendir/ 2、教科書選擇: 代碼大全 3、一維最大子數組的和問題 代碼已經傳入GitHub repository中 現轉貼于此: 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int i,n,f[2][1001]={0},a[1001]={0}; 6 printf("Please enter the number of input:"); 7 scanf("%d",&n); 8 printf("Then please enter your input:"); 9 for(i=1;i<=n;i++){ 10 scanf("%d",&a[i]); 11 } 12 f[0][1]=a[1];f[1][1]=a[1]; 13 for(i=2;i<=n;i++){ 14 if(f[1][i-1]+a[i]>=f[0][i-1] && f[1][i-1]+a[i]>=a[i])f[0][i]=f[1][i-1]+a[i]; 15 if(f[1][i-1]+a[i]<=f[0][i-1] && f[0][i-1]>=a[i])f[0][i]=f[0][i-1]; 16 if(f[1][i-1]+a[i]<=a[i] && f[0][i-1]<=a[i])f[0][i]=a[i]; 17 if(f[1][i-1]>=0)f[1][i]=f[1][i-1]+a[i]; 18 else f[1][i]=a[i]; 19 //f[0][i]=f[1][i-1]+a[i] f[0][i-1] a[i]; 20 //f[1][i]=f[1][i-1]+a[i] a[i] 21 } 22 printf("The maximum value of sub-array is :%d\n",f[0][n]); 23 system("pause"); 24 return 0; 25 }?
算法描述:
對于輸入一維數組a[]? 定義
f[0][i] 表示從a數組第0號元素到第i號元素的子數組中的 最大子數組和
f[1][i] 表示從a數組第0號元素到第i號元素的子數組中的 最大子數組和(其中a[i]元素必須被選取)
則存在以下遞推式:
f[0][i]=max{f[1][i-1]+a[i],f[0][i-1],a[i]}
f[1][i]=max{f[1][i-1]+a[i],a[i]}
所求出f[0][n]即為題目要求從a數組第0號元素到第n號元素的子數組中的 最大子數組和
算法時間復雜度O[n]
所解決元素規模與a數組定義的大小有關(故本例只能解決1000個元素以下的問題)
?
至此這篇blog差不多就結束了哈,祝好~! Elendir
轉載于:https://www.cnblogs.com/elendir/p/Homework-01.html
總結
以上是生活随笔為你收集整理的My First Blog on cnblogs (现代程序设计 Homework-01)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DevExpress的XtraRepor
- 下一篇: java与数据结构(4)---java实