【學習筆記】算法競賽:chapter 1 程序設計入門

編程不是看會的,也不是聽會的,而是練會的,所以儘量在計算機旁閱讀,將書中的代碼輸入到計算機中進行調試,順便做做上機練習。千萬不要圖快,如果沒有足夠的時間來實踐,那麼學得快,忘得也快。

經驗(參加機試之前看一看,不要犯錯

1、整數值用%d輸出,浮點數用%lf輸出

2、整數/整數=整數,浮點數/浮點數=浮點數

一般來說,只要在程序中用到了數學函數,就需要在程序最開始的地方包含頭文件<cmath>,並在編譯時連接數學庫。

3、scanf中的佔位符和變量的數據類型應一一對應,且每個變量前需要&符號。

4、在算法競賽中,輸入前不要打印提示信息。輸入完畢後應立即終止程序,不要等待用戶按鍵,因爲輸入輸出的過程都是自動的,沒有人工干預。

5、在算法競賽中不要使用頭文件conio.h,包括getch()、clrscr()等函數。

6、在算法競賽中,每行輸出均應以回車符結束,包括最後一行。除非特別說明,每行的行首不應有空格,但行末通常可以有多餘空格。另外,輸出的每兩個數或者字符串間應以單個空格隔開。

7、儘量用const關鍵字聲明常數。

8、賦值是動作,先計算右邊的值,再賦給左邊的變量,覆蓋它原來的值。

9、算法競賽是在比誰能更好地解決問題,而不是在比誰寫的程序看上去更高級。

10、C語言中的邏輯運算符都是短路運算符。一旦能夠確定整個表達式的值,就不再繼續計算。

11、算法競賽的目標是變成對任意輸入均得到正確的結果,而不是僅對樣例數據。

有時,即使通過了題目中給出的樣例,程序仍然可能存在問題。

12、如果有多個並列,情況不交叉的條件需要一一處理,可以用else if語句。

13、可以用花括號把若干條語句組合成一個整體。這些語句仍然按順序執行。

14、在難以一次性求出最後結果時,可以用變量存儲“臨時結果”,從而逐步更新。



對於競賽的一點說明:

1、選手程序的執行時自動完成的,沒有人工干預。不要在用戶輸入之前打印提示信息。

2、不要讓程序“按任意鍵退出”。(例如:system("pause"),或者多加一個getchar())。


簡單的雞兔同籠問題:

//雞兔同籠
#include<iostream>
using namespace std;
int main(){
	int n,m;
	cin>>n>>m;
	int y=(m-2*n)/2;
	int x=n-y;
	if(m%2==1||x<0||y<0)
		cout<<"No answer"<<endl;
	else{
		cout<<x<<" "<<y<<endl;
	}
	return 0;
} 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章