分治算法
1.思想:将原问题分解为几个规模较小但是类似与原问题的子问题,递归的求解这些子问题,然后再合并这些自问题的解来建立原问题的解。
2.归并排序算法完全遵循归并模式,操作有分解、解决、合并。合并为算法的关键。
应用
也就是相当于求一组数据中某个数字存在的个数,并不一定要以这个数字开始或者结束,只要某个位数上是这个数字就要把累加和加1.
#include <stdio.h>
void handlex(int x, int n[])
{
if(x > 9)
{
n[x % 10] += 1;
handlex(x / 10, n);
}
else
{
n[x] += 1;
}
}
void handle(int x,int y, int n[])
{
for(int i=x;i<=y;i++)
{
handlex(i, n);
}
}
int main(void)
{
int a,i,t,b;
int na[10];
for(i = 0; i < 10; i++)
{
na[i] = 0;
}
scanf("%d%d", &a, &b);
if(a > b) //将a,b的值互换,确保a<b
{
t=a;
a=b;
b=t;
}
handle(a,b,na);
for(i = 0; i < 10; i++)
{
printf("%d出现%d次\n", i,na[i]);
}
return 0;
}