赛码网常见接受参数的方法
来源:互联网 发布:gis数据挖掘前景 编辑:程序博客网 时间:2024/06/05 15:53
前段时间在赛码网上在线笔试,被其编译器各种坑,明明在本地上可以测出数据,但一放上去就是0%,如果本地测得数据是可以的话,说明逻辑基本没问题,那很明显就是在接收参数时出现问题了,经过对赛码网上的编程题的各种常见的传参形式,总结了以下一些基本的接受参数的方法,希望能帮助各位在再笔试时不会被坑:
一行的参数就不多说了,用cin或scanf;主要是多行参数的接收和数组的接收;
关于数组接收有时候会说用空格或,隔开什么的,基本上就这两种方式,其实你只要按正常方式接收就好,如:
12345
1,2,3,4,5,
1 2 3 4 5
统一用C接收:
for(i=0;i<n;++i)
{
scanf("%d",&arr[i]);
}
用C++接收:
for(i=0;i<n;++i)
{
cin>>arr[i];
}
(这里只是说的数组,如果人家给了你固定格式,像日期之类的1994-2-9,那你就乖乖地按scanf("%d-%d-%d",a,b,c)来)
但一般它会让你接收数组大小,如:5
12345
之类的多行数据接收。
其实关于多行数据我建议就用STL中的容器接收,一次性接收完毕,然后稍加处理就好,如上面的例子可如下接收:
vector<int> arr;
int n,size;
while(cin>>n)
{
arr.push_back(n);
}
size=arr[0];
arr.erase(arr.begin());
这样你的数组大小在size中,数组就在arr里,而且容器用起来很方便还很快,如果是二维的话也可以这样接收,只是你在用的时候注意下取值方式就好了,当然主要还是根据题来选择的,如果是C的话,赛码网的编译器也是在支持这样写的:
int n;
scanf("%d",&n);
int a[n];
for(i=0;i<n;++i)
{
scanf("%d",&arr[i]);
}
可是严格来说是不行的,所以建议尽量用C++来接收参数; 对于字符串和字符数组的接收除了scanf外,还有String类,char* fgets(char*string,int size,FILE*stream) ,cin中的getline函数(用法:istream& getline (char* s, streamsize n );
)都可以在赛码网上进行接收。
还有一种就是它说给n组测试数据,求输出结果,意思就是让你在n次循环下,每接收一组数据,处理一次,如:
输入:
3
1 2
3 4
5 6
输出:
1 2
3 4
5 6
大体如下:
int n,a,b;
cin>>n;
while(n--)
{
cin>>a>>b;
cout<<a<<b<<endl;
}
以上就是个人总结出来的大部分参数接收方法,根据题意配合着使用应该可以应付大部分编程题,个人建议:尽量使用C++,尽量用STL容器。希望能帮助大家,如果还有其他建议和方法,欢迎留言
- 赛码网常见接受参数的方法
- 赛码网常见接受参数的方法
- 创建接受可变数目参数的方法
- MyBatis接受参数的两种方法
- MFC接受参数的三种方法
- Struts2 接受参数方法
- Struts2的Action接受参数的方法介绍
- struts2的接受form表单参数的方法
- javascript在静态页面上接受参数的方法
- 几种JavaScript接受URL参数的方法
- structs2 接受参数的三种方法(转载)
- require方法接受以下几种参数的传递:
- spring MVC 接受表单参数常用的五种方法
- Struts2(四) 接受参数的三种方法
- jquery同一个方法接受个数不同的参数
- Struts2参数接受的问题
- switch接受的参数类型
- 【Struts2】请求参数的接受
- 解决eclipse安装应用程序到genymotion报adb不能正常运行的问题
- 【java版】数据结构与算法分析学习之路【二】表【数组+链表】
- springMVC初识,后台传给前台页面数据的4种方法
- ORACLE 格式化日期的语句
- Java IO流学习总结
- 赛码网常见接受参数的方法
- Docker基础:文件系统之AUFS
- linux sed、awk、diff命令常用操作
- android 特效闹钟GoogleClock
- react生命周期方法介绍
- std::find_if_not的使用
- 简单抽奖活动js代码
- jquery的ajax方法的回调函数详解
- 在kvm中使用网桥模式(BRIDGE NETWORKING MODE)