内部元素之和
 输入一个整数矩阵,计算位于矩阵内部的元素之和。所谓矩阵内部的元素,不在第一行和最后一行的元素以及第一列和最后一列的元素。
输入
 第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格分开。 接下来输入的m行数据中,每行包含n个整数(每个数大于等于0,小于1000),整数之间以一个空格分开。
输出
 输出对应矩阵的内部元素和
样例输入
 3 3
 3 4 1
 3 7 1
 2 0 1
样例输出
 7
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n=0,m=0;
	cin>>n>>m;
	int arr[n][m];
	int sum=0;
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			cin>>arr[i][j];
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			if(i!=0&&i!=n-1&&j!=0&&j!=m-1)//不是第一行,最后一行,第一列,最后一列。
				sum=sum+arr[i][j];
	cout<<sum;
	return 0;
}
图像叠加
 给出两幅相同大小的黑白图像(用0-1矩阵)表示,0表示白点,1表示黑点,求两幅图像叠加后的图像。说明:若两幅图像在相同位置上的像素点都是白色,叠加后为白色,否则为黑色。
 输入:第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。1 <= m <= 100, 1 <= n <= 100。 之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。 之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
 输出:m行,每行n个整数,表示叠加后黑白图像上各像素点的颜色。
样例输入
 3 3
 1 0 1
 0 0 1
 1 1 0
 1 1 0
 0 0 1
 0 0 1
样例输出
 1 1 1
 0 0 1
 1 1 1
 
图像相似度
 给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。
 输入:第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。1 <= m <= 100, 1 <= n <= 100。之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
 输出:一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。
样例输入
 3 3
 1 0 1
 0 0 1
 1 1 0
 1 1 0
 0 0 1
 0 0 1
样例输出
 44.44

 吃糖果3
 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0)。妈妈告诉名名每天可以吃一块或者两块巧克力。假设名名每天都吃巧克力,问名名共有多少种不同的吃完巧克力的方案。例如:如果N=1,则名名第1天就吃掉它,共有1种方案;如果N=2,则名名可以第1天吃1块,第2天吃1块,也可以第1天吃2块,共有2种方案;如果N=3,则名名第1天可以吃1块,剩2块,也可以第1天吃2块剩1块,所以名名共有2+1=3种方案;如果N=4,则名名可以第1天吃1块,剩3块,也可以第1天吃2块,剩2块,共有3+2=5种方案。现在给定N,请你写程序求出名名吃巧克力的方案数目。
输入:输入只有1行,即整数N。
 输出:输出只有1行,即名名吃巧克力的方案数。
 样例输入4
 样例输出5
#include<bits/stdc++.h>
using namespace std;
int eat(int n)
{
	if(n<=2)
		return n;	
	else
        return eat(n-1)+eat(n-2);//找规律后你会发现就是斐波那契数列
}
int main()
{
	int n;
	cin>>n;
	cout<<eat(n)<<endl;	
	return 0;
}
蜜蜂路线
 一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房m开始爬到蜂房n,m <n,有多少种爬行路线?
 
 输入格式:输入m, n的值
 输出格式:爬行有多少种路线
 输入1 14
 输出377
#include<bits/stdc++.h>
using namespace std;
int f(int n)
{
	if(n==1||n==2)
		return 1;
	if(n>2)
		return f(n-2)+f(n-1);				
}
int main()
{
	int m,n;
	cin>>m>>n;
	cout<<f(n-m+1);
	return 0;
}
吃糖果
 现有n(20 > n > 0)个糖果,每天可以吃1个,也可以每天吃2个,也可以每天吃3个,请计算共有多少种不同的吃法。
 输入:输入的每一行包括一组测试数据,即为糖果数n。最后一行为0,表示测试结束。
 输出:每一行输出对应一行输入的结果,即为吃法的数目。
样例输入
 1
 2
 3
 4
 0
样例输出
 1
 2
 4
 7
#include<bits/stdc++.h>
using namespace std;
int eat(int n)
{
	if(n<3)
		return n;
	else if(n==3)
		return 4;	
	else
	{
		return eat(n-1)+eat(n-2)+eat(n-3);
	}
}
int main()
{
	int n=0;
	while(true)
	{
		cin>>n;
		if(n==0)
			break;
		cout<<eat(n)<<endl;
	}
	return 0;
}



















