做TopCoder应注意什么

本文献给那些把c当作自己主要编程语言而且有一定c++基础,想做topcoder的人

1.topcoder的题目不需要标准输入输出cin,cout,scanf,printf,所有的参数都是通过函数参数传递的形式输入

 输出通过return返回。例如:

一般topcoder题都有如下的说明:


Class: Substitute

Method:getValue

Parameters:String, String

Returns:int

Method signature:

int getValue(String key, String code)


在这里你需要建一个类,名字叫Substitute,类里有一个函数

int getValue(String key, String code)


数据通过函数参数key和code传入,类似输入

通过return 返回,类似输出


所以topcoder的题都可以有这样一个模板:


#include <string>
#include <vector>
using namespace std;

class   //这儿加上题目中具体的类名
{
public:
    //这儿加上题目中具体的函数
};

2.vector类

topcoder的数组是用vector这个类定义的,关于这个类常用的函数有size( ),功能像字符数组的strlen一样,获取数组的长度。

比如你要定义一个int型数组你可以:vector <int> array;

array.size(); //获取array的长度

定义一个字符数组你可以:vector <char> array;

array的默认长度是0

其他类型以此类推

还有一点需要注意,那就是用vector定义的数组可以任意长,而且可以像c的数组那样访问具体元素

比如你可以通过array[0]访问array的第一个元素,通过array[i]访问array的第i个元素


3.string类

在topcoder里字符串是通过用string定义的变量传入函数的,也是通过string定义的变量返回的

它也有一个常用函数size( ),用来获取字符串长度。

它也可以像c里的数组那样访问字符串里的每个字符。

string s = "Hello";

s[0] = 'H'; //s变成了"hello"


以下是一个具体的topcoder程序,不必理会程序具体功能,只是告诉你topcoder的程序应该是什么格式


#include <string>
#include <vector>
using namespace std;

class Chooser {
public:
    int numSets(vector<int> a, vector<int> b, vector<int> c) {
        int sum = 0;
        for (int i = 0; i < a.size(); i++) {
            for (int j = 0; j < b.size(); j++) {
                for (int k = 0; k < c.size(); k++) {
                    int n = a[i] + b[j] + c[k];
                    if (n >= 60 && n <= 75) {
                        sum++;
                    }
                }
            }
        }
        return sum;
    }
};

除去模板,你会发现在函数体里的具体实现,语法和c差不多

有了上述知识,你可以像写c程序一样在类里的函数里写程序了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值