为什么要切换到ACM模式
通过对实验室毕业师兄师姐的询问,大部分所做的校招题目都在赛码网这个平台上, 以前自己刷题都是在Leetcode上,Leetcode属于核心代码模式。在ACM模式中还要自己组织输入输出。所以要开启输入输出和代码逻辑的双训练,因此,切换到ACM模式。
ACM模式 读取不知道行数和列数的矩阵,并将其转置
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main() {
vector<vector<int>> arr;
string input;
while (getline(cin, input)) {
if (input.size() > 0) {
stringstream stringin(input);
int num;
vector<int> a;
while (stringin >> num) {
cout<< num ;
a.push_back(num);
}
arr.push_back(a);
}
}
// cout << "rows: " << arr.size() << ", cols: " << arr[0].size() << endl;
for (int j = 0; j < arr[0].size(); ++j) {
for(int i = 0; i < arr.size(); ++i) {
cout << arr[i][j] << " ";
}
cout << endl;
}
// for (int i=0; i<arr.size(); i++) {
// for (int j=0; j<arr[i].size(); j++) {
// cout << arr[i][j] << " ";
// }
// cout << endl;
// }
}
ACM模式,动态规划至爬楼梯
上台阶
时间限制:1S
内存限制:64MB
描述
有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?
注:规定从一级到一级有0种走法。
输入描述
输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。
输出描述
对于每个测试实例,请输出不同走法的数量。
示例
输 入:
2
2
3
返回值:
1
2
#include<iostream>
#include<vector>
using namespace std;
int step(int &i) {
if(i == 2) return 1;
int dp[i+1];
dp[1] = 0;
dp[2] = 1;
dp[3] =2;
for(int a = 4; a < i+1; ++a) {
dp[a] = dp[a-1] + dp[a-2];
}
return dp[i];
}
int main(void) {
int n;
cin>>n;
vector<int> vec(n);
for(int i = 0; i < n; ++i) cin>>vec[i];
for(int i : vec) {
cout<<step(i)<<endl;
}
}