c 程式對怕

2021-09-26 15:21:53 字數 2309 閱讀 6043

以某個題為例

description

給出乙個序列,包含n個數,有正數、0及負數。

現取連續的一段數,問它們和的絕對值的最小、最大值分別為多少?

input

第一行乙個數n,表示序列長度。(1<=n<=1e5)

第二行包含n個整數,a[1],a[2]…a[n]。(-1e7<=a[i]<=1e7)

output

一行包含兩個數 最小值、最大值。

sample input 1

4-1 0 2 1

sample output 1

0 3hint

取[0]時,得到最小值0;取[2,1]時,得到最大值3。

總共四個程式

每個程式分別在乙個檔案裡,生成的所有資料都是放在對拍程式裡。a.in,a.out, ans.out。因為程式是從對拍程式處執行的,所以其實在執行其它三個程式的時候他們的路徑是對拍程式的路徑,所以用相對路徑就可以了。

system(「c:\a.exe」)執行a.exe可執行檔案,路徑一定要正確啊.

system(「fc a.in」 ans.in)比較這兩個檔案內容是否一直,相同返回0,不同返回非0.同樣需要指明這兩個檔案的路徑。

一 正確程式(確保答案是正確的道)

#include

using namespace std;

#define ll long long

const

int n =

100*

1000+10

;ll n, a[n]

;int

main()

);ll mi =

1e15

;for

(int i =

1; i <= n; i++

)mi =

min(mi,

abs(a[i]

- a[i -1]

)); cout << mi <<

" "<<

abs(a[0]

- a[n]

)<< endl;

return0;

}

二 測試程式(需要測試的程式)

#include

using namespace std;

typedef

long

long ll;

const ll maxn =

1e5+5;

ll n, a[maxn]

, x;

intmain()

sort

(a, a + n +1)

; ll mx =

1e15+5

;for

(ll i =

1; i <= n; i++

)printf

("%lld %lld\n"

, mx, a[n]

- a[0]

);return0;

}

三 資料生成程式(根據題目生成相應的程式)

#include

using namespace std;

#define ll long long

ll random

(int n)

void

creat()

}int

main()

四 對拍程式(比較測試程式與正確程式生成的答案是否相同)

#include

using namespace std;

intmain()

return0;

}

可以將每個測試資料儲存下來。

在sureanswer中開啟檔案,再執行exe檔案之後讀寫會出錯,必須在exe中開啟檔案,通過向main函式中傳入引數就可以開啟指定的檔案了。引數的下標從1開始。

為了保證隨機數的隨性,在每次執行createdata時,先先睡眠1秒,再用當前時間初始化隨機數種子。

程式主要修改了 sureaanswer,向其它exe參入的引數,第乙個是讀檔案,第二個是寫檔案。

#include

using namespace std;

intmain()

else

printf

("accept,測試點 #%d,用時 %.0lfms\n"

,i,ed-st);}

return0;

}

對拍程式c

對拍就是你給兩個程式和乙個隨機資料生成器,然後系統用隨機資料生成器的輸出資料作為你這兩個程式的輸入,比較這兩個程式的輸出,找到這兩個程式輸出不一樣的一組資料。data.exe是資料生成程式 test.exe是你需要檢查的程式 ac.exe是正確的程式 這三個程式需要放在同一目錄下,執行以下對拍程式即...

Release 對程式的優化 C

c 程式執行有debug模式和release模式 一般用於程式除錯,對 不會有任何的優化,還會加入很多檢測的節點,執行效率很低,速度慢 用於程式發布版本的執行方式,會對程式進行深度 徹底的優化,執行效率高,速度快 變數 定義的變數,比如 int a 1 不管中間進行多麼複雜的運算 變化,只要最後沒有...

C 程式設計師對c 說的話

1 在 c 中幾乎不需要用巨集,用 const 或 enum 定義明顯的常量,用 inline 避免函式 呼叫的額外開銷,用模板去刻畫一族函式或型別,用 namespace 去避免命名衝突。2 不要在你需要變數之前去宣告,以保證你能立即對它進行初始化。3 不要用 malloc,new 運算會做的更好...