大家好,我是泡泡,距离蓝桥杯还有五天,大家一定要坚持下去
目录
一丶36进制
二丶交换瓶子
三丶路径之谜
一丶36进制
题目链接:36进制 - 蓝桥云课 (lanqiao.cn)
题目要求:
对于 16 进制,我们使用字母 A−F 来表示 10 及以上的数字。
如法炮制,一直用到字母 Z,就可以表示 36 进制。
36 进制中,A 表示 10,Z 表示 35,AA 表示370。
你能算出 MANY 表示的数字用 10 进制表示是多少吗?
解题思路:
直接相减*起来就好。
#include
using namespace std;
int main()
{
int a = 'Y'-'A'+10;
int b = 'N'-'A'+10;
int c = 10;
int d = 'M'-'A'+10;
b*=36;
c=c*36*36;
d=d*36*36*36;
int sum=a+b+c+d;
cout<
二丶交换瓶子
题目链接:交换瓶子 - 蓝桥云课 (lanqiao.cn)
题目要求:
有 N 个瓶子,编号 1 ~ N,放在架子上。
比如有 5 个瓶子:
2 1 3 5 4
要求每次拿起 2 个瓶子,交换它们的位置。
经过若干次后,使得瓶子的序号为:
1 2 3 4 5
对于这么简单的情况,显然,至少需要交换 2 次就可以复位。
如果瓶子更多呢?你可以通过编程来解决。
解题思路:
遇到编号和数字不符合的就交换位置 记录次数
#include
using namespace std;
int a[10005],ans,n;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
while(a[i]!=i)
{
swap(a[i],a[a[i]]);
ans++;
}
}
cout<
三丶路径之谜
题目链接:路径之谜 - 蓝桥云课 (lanqiao.cn)
题目要求:
小明冒充 X 星球的骑士,进入了一个奇怪的城堡。
城堡里边什么都没有,只有方形石头铺成的地面。
假设城堡地面是 n×n 个方格。
如下图所示。
按习俗,骑士要从西北角走到东南角。
可以横向或纵向移动,但不能斜着走,也不能跳跃。
每走到一个新方格,就要向正北方和正西方各射一箭。
(城堡的西墙和北墙内各有 n 个靶子)同一个方格只允许经过一次。
但不必走完所有的方格。
如果只给出靶子上箭的数目,你能推断出骑士的行走路线吗?有时是可以的,比如上图中的例子。
本题的要求就是已知箭靶数字,求骑士的行走路径(测试数据保证路径唯一)
解题思路:
dsf,要注意的问题是要记录当前走过的步数,要看看步数是否和横或纵坐标的和值相同。
走的路径也可能到终点时也消耗不了箭的数量,所以要注意走的步数要和sum值相同。
#include
using namespace std;
const int N = 21;
int dx[]= {-1,1,0,0};
int dy[]= {0,0,-1,1};
int n;
int top[N],lft[N];
int ans[N];
int sum;
bool vis[N][N];
int pre[N][N];
bool pd(int x,int y)
{
if(!vis[x][y]&&x>=0&&x=0&&y0&&lft[x]>0)
{
return true;
}
return false;
}
void dfs(int x,int y,int s)
{
ans[s]=x*n+y;
if(x==n-1&&y==n-1&&s==sum)
{
for(int i=1;i<=s;i++)
{
cout<>n;
for(int i=0;i>top[i];
sum += top[i];
}
for(int i=0;i>lft[i];
}
vis[0][0]=1;
dfs(0,0,1);
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)