跳台阶&&搜索字母
有一个n级台阶的楼梯,小明一次可以向上跳1步,两步,甚至是n步,请问小明跳到n级台阶有多少种跳法?
输入
第一行输入一个整数t,代表有t组样例:( T<=30)
接下来的t行,都用一个整数n,表示楼梯有n级台阶( 1<=n<=30)
输出
跳到第n级台阶有多少种跳法
这一题既可以列前几项发现规律,也可以用分步方法数求解
共n个台阶,除了最后的台阶必须要到达,其余每个台阶都既可以踩也可以不踩,两种选法,所以整个过程就是决定从1到n-1个台阶踩还是不踩,所以是2的n-1次方。
int t,n;
scanf("%d",&t);
while(t>0)
{
long way=1;
scanf("%d",&n);
for(int i=0;i<n-1;i++)
{
way*=2;
}
printf("%ld\n",way);
t--;
}
有一串长度为n的小写字母组成的字符串,hx073269可以从中挑选‘k’ ‘i’ ‘n’ ‘g’四个字符组成一支礼炮,或者从中挑选‘k’ ‘i’ ‘n’ ‘g’ ‘i’ ‘n’ ‘g’七个字符组成两支礼炮。请问hx073269为王的诞生最多能献上多少礼炮?
输入
第一行一个正整数n,表示字符串长度,n<=10^7。
第二行一串只含有小写字母的字符串。
输出
输出hx073269为王的诞生能献上的最多礼炮数。
这一题不开数组储存字符串,而是开个数组记录每个字母出现的次数,同时i,n,g是短板效应,取最小值,最后是简单的数学问题。
long b[26]={0};
long n;
char ch;
long x;
long way;
scanf("%d",&n);
while(n>=0)
{
ch=getchar();
b[(ch-'a')]++;
n--;
}
x=min(b[8],b[13],b[6]);
if(x>=2*b[10]) way=2*b[10];
if(x<2*b[10]) way=x;
printf("%ld",way);

浙公网安备 33010602011771号