暨南大学计算机考研复试真题(一)
思路:这题要注意:其实是主要还是注意每行第一个元素和每行最后一个元素。设置一个num[n][n]的二位数组从上至下相加,每行相加,最后得到的最后一行num判断哪一列num最大,初始时可以把num[n-1][0]设为max,然后这一行元素进行比较。
·
给你一个数n,然后使其成为一个n层的金字塔,其中金字塔上面一个数字比它下面两个数字小。你的任务就是从最上面开始往下走,只能向下走相邻的两个数字,从第一层走到最下面一层,求出其最大值(金字塔的数据结构你要自己建,老师过来给你数据,你再在控制台上输)。
金字塔样子:
3
4 5
4 6 6
7 12 13 8
思路:这题要注意:其实是主要还是注意每行第一个元素和每行最后一个元素。设置一个num[n][n]的二位数组从上至下相加,每行相加,最后得到的最后一行num判断哪一列num最大,初始时可以把num[n-1][0]设为max,然后这一行元素进行比较
#include<bits/stdc++.h>
#include<cstring>
using namespace std;
const int N=1001,INF=0X3f3f3f3f;
int num[N][N]={0},f[N][N];//宏定义放到main外
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
cin>>num[i][j];
}
};
memset(f,-0x3f,sizeof(f));
f[1][1]=num[1][1];
for(i=2;i<=n;i++)
{
for(j=1;j<=i;j++)
{
f[i][j]=max(f[i-1][j-1],f[i-1][j])+num[i][j];
}
}
int ans=-INF;
for(j=1;j<=n;j++)
{
ans=max(ans,f[n][j]);
}
cout<<ans;
}
给你一个数n,使用递归求n!
#include<bits/stdc++.h>
using namespace std;
int function(int n)
{
//注意边界
if(n==0)
return 1;
if(n==1)
return 1;
return function(n-1)*n;
}
int main()
{
int n;
cin>>n;
cout<<function(n);
}
给你一个年份,还有一个数字n,以1月1日为第一天,然后你根据n的值来求出是几月几号 注意区分平年和闰年
要注意在for循环中使用break跳出循环,不然i会一直加,加到13,这样子输出的月份不符合题意
#include<bits/stdc++.h>
using namespace std;
void function(int year,int num)
{
int i;
int a1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int a2[12]={31,29,31,30,31,30,31,31,30,31,30,31};
if(year%400==0||year%4==0&&year%100!=0)
{
for(i=0;i<12;i++)
{
if(num>a2[i])
{
num-=a2[i];
}
else{
break;
}
}
}
else{
for(i=0;i<12;i++)
{
if(num>a1[i])
{
num-=a1[i];
}
else
{
break;
}
}
}
printf("year%d, yue%d,ri%d",year,i+1,num);
}
int main()
{
int year,num;
cin>>year>>num;
function( year, num);
return 0;
}
给你一串数字,实现其排序,然后把排序后重复的数字只留下一个。如(3,5,5,2,1,4,6)—>(1,2,3,4,5,6)。
去重的方式要记住
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
int i,j;
int a[10001],c[10001];
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
int temp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
temp =a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//去重(之前没想到做的时候)
c[0]=a[0];
int index=1;
for(i=1;i<n;i++)
{
if(a[i]!=a[i-1])
{
c[index]=a[i];
index++;
}
}
for(i=0;i<index;i++)
{
cout<<c[i];
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)