内部元素之和
输入一个整数矩阵,计算位于矩阵内部的元素之和。所谓矩阵内部的元素,不在第一行和最后一行的元素以及第一列和最后一列的元素。
输入
第一行分别为矩阵的行数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;
}