北邮-上机-提交错误解决及一些经验
2019獨角獸企業重金招聘Python工程師標準>>>
1、出現Time?Limit?Exceed問題
答:三種原因:1、程序死循環或太多的循環;2、對極限狀況計算量太大,需要優化程序,如對10000個以上進行排序必須使用快速排序;3、程序錯了。還有一種原因:題目中說n是整數,可能輸入0啊或-10啊,不一定都是正數,也可能n=10億之類的。你循環就累死你。。。
還有一種情況就是,如果cout不行,那就換c語言!!!
2、Presentation?Error?:?答案基本正確,但是格式不對。
答:出現這種問題主要是輸出格式的問題,主要是控制最后一個輸出時的格式,后面不能有空格。
3、對于多組輸入數據輸出結果
答:一般是每組就要對應一個結果
4、出現超時的處理技巧
答:(1)對于while(1){},一般會出現超時,可以先有一個while(cin>>x){for()...}
詳見1115.
(2)還有,就是實在不行就選擇C語言的輸入方式。
(3)對于scanf輸入方式,如果不是數組,必須有“&”符號
????????While(scanf(“%d?%d”,&a,&b)){}
5、對于多組輸入且結束符是(0,0)
答:可能不需要存儲其他的信息,只需要將結果顯示出來即可。
???While(cin>>x>>y&&(x||y))
???While(cin>>x>>y&&(x||y)),可以用兩組輸入信息。
6、sort()函數
答:其頭文件是<algorithm>
7、對于題中多組輸入對應多組輸出的
答:每輸入一組則就輸出一組結果。
如:
8、對于題中有講到數據的范圍的,一定要處理邊界的情況!!!
答:如:接下來有T行,每行有一個數字n(0<=n<=10^8),表示要求的二進制串。,則一定要考慮到n為0的情況輸出的結果!!
9、輸入字符串
答:char?array[100];
???While(scanf(“%s”,array)!=EOF){}
10、含有malloc(),要包含頭文件<malloc.h>
11、參數引用的情況(樹)
12、對于一些過程,不必保留中間數據,只要知道結果。如:開門人和關門人
13、理解結束條件
答:(1)當讀到'#'時輸入結束,相應的結果不要輸出。1021
(2)注意(0,?0)不作為任何一個測試用例里面的點。一個沒有點的測試用例標志著整個輸入的結束。1020?\\while(cin>>x>>y&&(x||y))
14、讀入含有空格的字符串,可用gets()函數;
15、對于sort()函數,其頭文件<algorithm.h>
16、楊輝三角形初始化
void?init()//初始化,將楊輝三角形存儲在f[1000][1000]中?
{
?????int?i,j;
?????f[2][1]?=?f[2][2]?=?1;
?????for(i=3;i<1000;i++)
?????{
?????????f[i][1]?=?f[i][i]?=?1;
?????????for(j=2;j<i;j++)?f[i][j]?=?f[i-1][j-1]?+?f[i-1][j];
?????}?????
}
17、#include<iostream>
using?namespace?std;
int?main()
{
????int?num[2000];
????int?i,a,b,x,y,len,n;
????while(cin>>n)
????{
????for(i=0;i<2*n;i++)//存入數組?
????{
?????????cin>>a>>b;
?????????num[i]?=?a;
?????????i++;
?????????num[i]?=?b;
????}
????x?=?num[0];//初始化x,存x的最小值
????y?=?num[1];//初始化y,當x相等時,存y的最小值?
????//len?=?sizeof(num)/sizeof(num[0]);
????len?=?2*n;
????
????//for(i=0;i<len;i++){cout<<num[i]<<'?';}
????//?cout<<"hello"<<endl;
????for(i=2;i<len;)
????{
?????????if(num[i]<x)
?????????{
???????????x?=?num[i];
???????????y?=?num[i+1];
???????????i?=?i+2;????
???????????continue;
???????????//cout<<"hello"<<endl;???????
?????????}
?????????else?if(num[i]==x)
?????????{
?????????????if(num[i+1]<y)
?????????????{
????????????????????y?=?num[i+1];
????????????????????i?=?i+2;
????????????????????continue;??????????
?????????????}?
?????????}
?????????else?{i?=?i+2;continue;}
????}
????
????cout<<x<<'?'<<y<<endl;
}
????return?0;????
}?
18、冒泡排序
答:N個數據,進行N-1輪排序,每輪進行N-1-i次交換。如:10個數據,則進行9輪排序,每輪進行9-i次交換。
????for(i=0;i<4;i++)
????{
???????for(j=0;j<4-i;j++)
???????{
???????????if(a[j]>a[j+1])//大數下沉
???????????{
??????????????temp?=?a[j];
??????????????a[j]?=?a[j+1];
??????????????a[j+1]?=?temp;
?????????????????????????????
???????????}??????????????????
???????}????????????????
}?
19、對于數組,scanf("%d",&a[i]);
20、C語言中,system("pause");在同文件#include<stdlib.h>中。
問:我的程序是如何輸入又是怎樣輸出的?
答:你的程序應該是用stdio輸入(標準的輸入流),輸出應該是用stdout輸出(標準的輸出流).比如說:你可以使用?C?里面的?scanf?和?C++?里面的cin?來讀入,而使用?C?里面?printf?或?C++?里面的cout?來寫出。?你提交的程序將不允許進行任何文件的操作。你有可能為此而得到?Runtime?Error?或者?Wrong?Answer。?值得注意的是:G++?中的?I/O?操作,是基于比較復雜的實現模式,相對于?scanf?和?printf?而言,cin和cout要慢很多。?經驗表明他們之間的差異在當你使用?G++?作為編譯器的時候顯得尤為突出。所以當一個問題要求有比較大量的輸入和?輸出時,cin?和?cout?將會導致Time?Limit?Exceed?!
21、值得注意的是:對64-bit?integers,請使用?long?long?進行申明,GNU?不支持__int64,輸入輸出使用lld.例如:
long?long?a;
scanf("%lld",&a),?printf?("%lld",a);
轉載于:https://my.oschina.net/pangzhuzhu/blog/312921
總結
以上是生活随笔為你收集整理的北邮-上机-提交错误解决及一些经验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AppDelegate.h
- 下一篇: SQL Server 固定角色