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);