目录
6-2 数圈圈
编程题
20分
作者:七思
单位:吉首大学
时间限制:1000MS
内存限制:128MB
代码长度限制:5KB
题目描述
tabris有一个习惯,无聊的时候就会数圈圈,无论数字还是字母。
现在tabris更无聊啦,晚上睡不着觉就开始数羊,从a只数到b只。
顺便还数了a到b之间有多少个圈。
但是tabris笨啊,虽然数羊不会数错,但很可能数错圈的个数。
但是tabris很难接受自己笨这个事实,所以想问问你他一共应该数出多少个圈,这样tabris才好判断他到底笨不笨啊。
输入格式
输入一个T,表示数据组数
每组测试数据包含两个正整数a,b。
T∈[1,50]
a,b∈[1,10^6]
输出格式
(圈圈的个数是指数字的封闭性,如“8”就是两个圈圈,“9”就是一个圈圈,“16”就是一个圈圈)每组数据输出结果,并换行。
输入样例
在这里给出一组输入。例如:
11 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 1 100
输出样例
在这里给出相应的输出。例如:
0 0 0 1 0 1 0 2 1 1 111
代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int DD(int x)//用来得到一个数中有多少个圈圈
{
if (x < 10)
{
if (x == 0)
return 1;
else if (x == 4)
return 1;
else if (x == 6)
return 1;
else if (x == 8)
return 2;
else if (x == 9)
return 1;
else
return 0;
}
else
{
return DD(x / 10) + DD(x % 10);
}
}
int main(int argc, char* argv[])
{
int t, a, b;
scanf("%d", &t);
while (t--)
{
scanf("%d %d", &a, &b);
int sum = 0;
while (a <= b)
{
sum += DD(a);
a++;
}
printf("%d\n", sum);
}
return 0;
}
6-3 编辑距离问题
编程题
10分
作者:段明秀
单位:吉首大学
时间限制:400MS
内存限制:64MB
代码长度限制:5KB
题目描述
设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到 B的编辑距离,记为d(A,B)。 对于给定的字符串A和字符串B,计算其编辑距离 d(A,B)。
输入格式
第一行是字符串A,文件的第二行是字符串B。
提示:字符串长度不超过2000个字符。
输出格式
输出编辑距离d(A,B)
输入样例
在这里给出一组输入。例如:
fxpimu
xwrs
输出样例
在这里给出相应的输出。例如:
5
代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char s1[2005];
char s2[2005];
int dp[2005][2005];
int main()
{
int i, j,n,m,min;
scanf("%s\n%s", s1, s2);
n = strlen(s1);
m = strlen(s2);
for (i = 0; i <= m; i++)
dp[i][0] = i;
for (j = 0; j <= n; j++)
dp[0][j] = j;
for (i = 1; i <= m; i++)
{
for (j = 1; j <= n; j++)
{
if (s2[i-1] == s1[j-1])
{
dp[i][j] = dp[i - 1][j - 1];
}
else
{
min = dp[i][j - 1];
if (min > dp[i - 1][j])
min = dp[i - 1][j];
if (min > dp[i - 1][j - 1])
min = dp[i - 1][j - 1];//替换
dp[i][j] = min + 1;
}
}
}
printf("%d", dp[m][n]);
return 0;
}
6-1 回文串问题
编程题
10分
作者:段明秀
单位:吉首大学
时间限制:400MS
内存限制:64MB
代码长度限制:5KB
题目描述
一个字符串,如果从左到右读和从右到左读是完全一样的,比如”aba”,我们称其为回文串。现在给你一个字符串,可在任意位置添加字符,求最少添加几个字符,才能使其变成一个回文串。
输入格式
任意给定的一个字符串,其长度不超过1000.
输出格式
能变成回文串所需添加的最少字符数。
输入样例1
Ab3bd
输出样例1
在这里给出相应的输出。例如:
2
输入样例2
Abb
输出样例2
在这里给出相应的输出。例如:
1
代码
6-4 最大子矩阵和问题
编程题
10分
作者:段明秀
单位:吉首大学
时间限制:400MS
内存限制:64MB
代码长度限制:5KB
题目描述
最大子矩阵和问题。给定m行n列的整数矩阵A,求矩阵A的一个子矩阵,使其元素之和最大。
输入格式
第一行输入矩阵行数m和列数n(1≤m≤100,1≤n≤100),再依次输入m×n个整数。
输出格式
输出第一行为最大子矩阵各元素之和,第二行为子矩阵在整个矩阵中行序号范围与列序号范围。
输入样例
在这里给出一组输入。例如:
5 6 60 3 -65 -92 32 -70 -41 14 -38 54 2 29 69 88 54 -77 -46 -49 97 -32 44 29 60 64 49 -48 -96 59 -52 25
输出样例
在这里给出相应的输出。例如:
321 2 4 1 6