天天看點

牛客網輸入規範總結(c++部分)處理細節和技巧

注意:輸入的多組輸入,不是一組,已經猜了很多次坑了哦!

輸入

預先不輸入資料的組數

while(cin>>a>>b){
    cout<<a+b<<endl;
}           

預先知道資料組數

cin>>n;
for(int i=0; i<n; i++){
    int a,b;
    cin>>a>>b;
    cout<<a+b<<endl;
}           

隻有一組資料

cin>>a>>b;
cout<<a+b<<endl;           

輸出

不需要輸出case數

cin>>n;
for(int i=0; i<n; i++){
    int a, b;
    cin>>a>>b;
    cout<<a+b<<endl;
}           

需要輸出case數

cin>>n;
for(int i=0; i<n; i++){
    int a, b;
    cin>>a>>b;
    cout<<"Case"<<i+1<<a+b<<endl;
}           

每個case之後有空行

for(int i=0; i<n; i++){
    int a, b;
    cin>>a>>b;
    cout<<"Case"<<i+1<<a+b<<endl<<endl;
}           

兩個Case之間有空行

cin>>n;
for(int i=0; i<n; i++){
    int a, b;
    cin>>a>>b;
    if(i>0){
        cout<<endl;
    }
    cout<<"Case"<<i+1<<a+b<<endl;
}           

處理細節和技巧

不用儲存所有組的輸入,讀一組算一組

“可惡”的字元串——帶空白

  • scanf, cin之類都讀到空白結束
  • gets, cin.getline。再自己parse
  • 用scanf, gets代替cin。

注意格式

  • 字母大小寫
  • 什麼時候換行
  • 輸出“case”後面有沒有“#”或者“:”之類。
  • 每行末尾有\n,但一般沒有空白
  • 用printf代替cout。

OJ常見狀态

  • 記憶體超限——使用記憶體過多
  • 傳回非零——main函數傳回了非零值
  • 浮點錯誤——除以零
  • 運作錯誤——指針亂指
  • 段錯誤——指針越界

繼續閱讀