20160930_赛码网_上台阶&约德尔测试

有一楼梯共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 尽量让算法简单,如果算法很麻烦,那么一定程度上说明方向有误:
   比如上台阶的算法,可以想当前台阶的前面一次跨步的可能性之和


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值