蓝桥杯02

发布时间:2024年01月11日

目录

闰年判断

回文数

杨辉三角

字母图形

拿金币


?

闰年判断

#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;

#define N 100

int arr[N];
int n;
int mem[N];
int st[N];

int main()
{
	scanf("%d",&n);
	if( (n % 4 == 0 && n % 100 != 0) || n % 400 == 0 )
		cout<<"yes";
	else cout<<"no";
	
	return 0;
}

回文数

#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;

#define N 100

int a[N];
int n;
int mem[N];
int st[N];

int func(int x) // 求逆序 
{
	int tmp = 0;
	while(x)
	{
		tmp = tmp * 10 + x % 10;
		x /= 10;	
	}
	return tmp;
}

void func_spe(int x,int &sum) // 特殊回文数,每位相加等于输入的数字 
{
	int tmp = 0;
	while(x)
	{
		sum += x % 10;
		x /= 10;	
	}
}

//回文数 
int main()
{
	cin>>n;
	for(int i = 10000; i <= 999999; i ++)
	{
		int sum = 0;
		func_spe(i,sum);
		if(sum == n && func(i) == i)
			cout<<i<<endl;
	}
	return 0;
}

打印杨辉三角

#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;

#define N 100

int arr[N];
int n;
int mem[N];
int st[N];

int dfs(int x)
{


}
int main()
{
	//定义一个9行9列的二维整型数组
    int data[35][35];

    int i = 0;
    int j = 0;
	cin>>n; 
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            //数组所有元素都赋值为1
            data[i][j] = 1;
        }
    }

    //dp
    for (i = 1; i < n; i++)
    {
        for (j = 1; j < i; j++)
        {
            data[i][j] = data[i-1][j] + data[i-1][j-1];
        }
    }

    //输出数组所有元素
    for (i = 0; i < n; i++)
    {
         for (j = 0; j <= i; j++)
         {
             printf("%d ", data[i][j]);
         }
         printf("\n");
    }
    return 0;
}

字母图形

#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;

#define N 100

int arr[N];
int n,m;
int mem[N];
int st[N];

int main()
{
    cin>>n>>m;

    for(int i=0;i<n;i++)
    {
         for(int j=0;j<m;j++)
         {
              printf("%c",'A'+abs(i-j)); 
         }
         printf("\n");
    } 
   return 0;
}

拿金币

问题描述

  有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。请问如何走才能拿到最多的金币。

输入格式

  第一行输入一个正整数n。
  以下n行描述该方格。金币数保证是不超过1000的正整数。

输出格式

  最多能拿金币数量。

#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;

#define N 1010

int a[N][N];
int n,m;
int mem[N];
int st[N];
int dp[N][N];
int dfs(int x)
{


}

/*
样例输入
3
1 3 3
2 2 2
3 1 2
样例输出
11
*/

int main()
{
	cin>>n;
	for(int i = 1;i <= n; i ++)
	{
		for(int j = 1;j <= n; j ++)
		{
			cin>>a[i][j];
			dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + a[i][j];
		}
	}

	printf("%d",dp[n][n]);
	return 0;
}

?

文章来源:https://blog.csdn.net/qq_61973247/article/details/135513344
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。