赞
踩
第六题:解码
题目描述
小明有一串很长的英文字母,可能包含大写和小写。
在这串字母中,有很多连续的是重复的。
小明想了一个办法将这串字母表达得更短:将连续的几个相同字母写成字母 + 出现次数的形式。
例如,连续的 5 个 a,即 aaaaa,小明可以简写成 a5(也可能简写成 a4a、aa3a 等)。
对于这个例子:HHHellllloo,小明可以简写成 H3el5o2。
为了方便表达,小明不会将连续的超过 9 个相同的字符写成简写的形式。
现在给出简写后的字符串,请帮助小明还原成原来的串。
输入格式 输入一行包含一个字符串。
输出格式 输出一个字符串,表示还原后的串。
样例输入 H3el5o2
样例输出 HHHellllloo
数据范围 对于所有评测用例,字符串由大小写英文字母和数字组成,长度不超过100。 请注意原来的串长度可能超过 100。
代码
#include <iostream> #include <string> using namespace std; int main() { string s,ans=""; cin>>s; char pre; for(int i=0; i<s.length(); i++){ if(s[i]>='2'&&s[i]<='9'){ int temp = s[i]-'0' -1; for(int j=0; j<temp; j++){ ans+=pre; } }else{ ans += s[i]; pre = s[i]; } } cout<< ans <<endl; return 0; }
第七题:走方格
问题描述
在平面上有一些二维的点阵。
这些点的编号就像二维数组的编号一样。
从上到下依次为第 1 至第 n 行,从左到右依次为第 1 至第 m 列,每一个点可以用行号和列号来表示。
现在有个人站在第 1 行第 1 列,要走到第 n 行第 m 列。只能向右或者向下走。
注意,如果行号和列号都是偶数,不能走入这一格中。
问有多少种方案。
输入格式 输入一行包含两个整数 n,m。
输出格式 输出一个整数,表示答案。
样例输入1: 3 4
样例输出1 2
样例输入2: 6 6
样例输出2 0
数据范围 1 ≤ n ≤ 30, 1 ≤ m ≤ 30。
思路
dp[i][j]:表示从(1,1)到(n,m)的方案数
代码
#include <iostream> using namespace std; const int N = 35; int dp[N][N]={ 0};//初始化 int main() { int n,m; cin >> n >> m; for(int i=1; i<=n; i++){ for(int j=1; j<=m; j++){ if(i%2==0 && j%2==0) continue;//都是偶数就跳过 else if(i==1||j==1)dp[i][j] = 1; //初始值,如果在第一行或第一列都只能一种方案 //因为在第一行只能向右走,在第一列只能向下走 else{ dp[i]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。