有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?
注:规定从一级到一级有0种走法。
输入
输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。
|
样例输入
2 2 3
|
输出
对于每个测试实例,请输出不同走法的数量。
|
样例输出
1 2 |
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n; int m[41]; int *k;
for (int j = 0; j < 41; j++)
{
if (j == 0) m[j] = 0;
if (j < 4) m[j] = j - 1;
else m[j] = m[j - 1] + m[j - 2];
//printf("%d\n", m[j]);
}
scanf("%d", &n);
k= (int*)malloc(sizeof(int)*n);
for (int i = 0; i < n; i++)
{
scanf("%d", &k[i]);
}
for (int i = 0; i < n; i++) printf("%d\n", m[k[i]]);
system("pause");
return(0);
}
题目描述
兰博和提莫闲聊之后,回归到了他们的正题,约德尔人的未来。
说起约德尔人的未来,黑默丁格曾经提出了一个约德尔测试,将约德尔人的历史的每个阶段都用一个字符表达出来。(包括可写字符,不包括空格。)。然后将这个字符串转化为一个01串。转化规则是如果这个字符如果是字母或者数字,这个字符变为1,其它变为0。然后将这个01串和黑默丁格观测星空得到的01串做比较,得到一个相似率。相似率越高,则约德尔的未来越光明。
请问:相似率为多少?
输入
每组输入数据为两行,第一行为有关约德尔人历史的字符串,第二行是黑默丁格观测星空得到的字符串。 (两个字符串的长度相等,字符串长度不小于1且不超过1000。)
|
样例输入
@!%12dgsa 010111100
|
输出
输出一行,在这一行输出相似率。用百分数表示。(相似率为相同字符的个数/总个数,精确到百分号小数点后两位。printf("%%");输出一个%。)
|
样例输出
66.67% |
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char m[1000]; char *n;
gets(m);
int str = strlen(m); int p = str; int q = str;
while (str--)
{
int test1, test2,test3;
test1 = (int)(m[str] - 'A');
test2 = (int)(m[str] - 'a');
test3 = (int)(m[str] - '0');
if (test1 < 26 && test1 >= 0 || test2 < 26 && test2 >= 0 || test3 < 10 && test3 >= 0)
m[str] = '1';
else m[str] = '0';
}
n = (char *)malloc(sizeof(int)*p);
for (int i = 0; i <p; i++) scanf("%c", &n[i]);
int count = 0;
while (p--)
{
if (m[p] == n[p])
count++;
}
double c;
c= count*1.00/ q*100;
printf("%.2f%%\n", c);
system("pause");
return(0);
}
今天的编程速度进步明显。
学到的东西:
1 判断字母和数字,与a,A,0比较
2 除法要保留小数点后三位数数,乘1.000即可
3 尽量让算法简单,如果算法很麻烦,那么一定程度上说明方向有误:
比如上台阶的算法,可以想当前台阶的前面一次跨步的可能性之和