趣味算法------拯救阿拉德大陆

目录

​编辑

题目描述:

思路解析:

具体代码:

总结:


题目描述:


此时一批勇士也随之而来,但其能力也是参差不齐,我们需要挑选出最优秀的勇士来守护这片大陆。每位勇士都有属于自己的编号,而我们现在有四张卡片里面分别标记了一个号码,当勇士的编号为其中某一张卡片中号码的倍数时说明该勇士是优秀的。目前有 n 名勇士(编号 1-n)并且告诉你卡片内的号码,请你计算出能挑选出多少位勇士?

输入格式
第一个行读入一个正整数 n。
第二行读入四个正整数 a, b,c, d 分别表示四张卡片内的号码。

输出格式
输出挑选出来的勇士个数。

输入样例1
输入
10
2 3 5 7
输出
9
输入样例2
输入
20
6 7 13 9
输出
7

思路解析:

        我们需要定义一个整形n来接收勇士的数量,然后定义一个数组来储存四张卡牌的号码,定义一个整形count并初始化为0表示目前挑选勇士的数量。

        然后让编号1~n的勇士依次检查四张卡牌中有没有自己的倍数,如果有的话,计数器count自增1。

具体代码:

#include<stdio.h>
int main(void)
{
    int n;
    int arr[4];//四张卡牌
    scanf("%d",&n);
    int count = 0;//计数器
    for(int i = 0;i<4;i++)
        scanf("%d",&arr[i]);
    
    for(int i = 1;i<=n;i++)
        for(int j = 0;j<4;j++)
            if(i%arr[j] == 0)
                {
                    count++;
                    break;//一旦挑选就退出循环,以防重复挑选。
                }

    printf("%d",count);
    
}

总结:

        两层for循环,遍历卡牌中的号码有没有勇士编号的倍数,计算符合条件的勇士数量。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
罗马尼亚问题是一个经典的搜索问题,目标是找到两个城市之间的最短路径。其中,城市之间的距离以边的权重表示,从起点到目标点的路径必须经过每个城市一次且仅一次。本题要求使用 Python 代码实现深度优先搜索,并逐个点亮。 深度优先搜索是一种基于栈的搜索方法,在搜索的过程中,先遍历一个分支的全部节点,直到该节点的所有分支都被遍历完为止,然后回溯到前一个节点,重复执行上述步骤,直至找到目标节点或搜索全部节点。在罗马尼亚问题中,栈可以用来维护搜索的节点。 具体的实现步骤如下: 1. 定义一个字典,表示罗马尼亚的地理位置和距离信息。 2. 定义一个列表,表示从起点到目标点的路径。 3. 根据深度优先搜索的特点,使用栈来保存搜索的节点。 4. 设定起点为起始节点,将其加入栈中。 5. 当栈非空时,从栈中弹出最后一个节点,并查找其相邻节点。 6. 对于每个相邻节点,如果它不在路径中,将其加入路径中,并添加到栈中。 7. 如果相邻节点是目标节点,则返回路径。 8. 重复执行步骤5-7,直至栈为空,返回空列表。 实现代码如下: ```python romania_map = { 'Arad': {'Zerind': 75, 'Sibiu': 140, 'Timisoara': 118}, 'Bucharest': {'Urziceni': 85, 'Pitesti': 101, 'Giurgiu': 90, 'Fagaras': 211}, 'Craiova': {'Dobreta': 120, 'Rimnicu Vilcea': 146, 'Pitesti': 138}, 'Dobreta': {'Mehadia': 75, 'Craiova': 120}, 'Eforie': {'Hirsova': 86}, 'Fagaras': {'Sibiu': 99, 'Bucharest': 211}, 'Giurgiu': {'Bucharest': 90}, 'Hirsova': {'Urziceni': 98, 'Eforie': 86}, 'Iasi': {'Neamt': 87, 'Vaslui': 92}, 'Lugoj': {'Timisoara': 111, 'Mehadia': 70}, 'Mehadia': {'Dobreta': 75, 'Lugoj': 70}, 'Neamt': {'Iasi': 87}, 'Oradea': {'Zerind': 71, 'Sibiu': 151}, 'Pitesti': {'Rimnicu Vilcea': 97, 'Bucharest': 101, 'Craiova': 138}, 'Rimnicu Vilcea': {'Sibiu': 80, 'Pitesti': 97, 'Craiova': 146}, 'Sibiu': {'Arad': 140, 'Oradea': 151, 'Fagaras': 99, 'Rimnicu Vilcea': 80}, 'Timisoara': {'Arad': 118, 'Lugoj': 111}, 'Urziceni': {'Bucharest': 85, 'Vaslui': 142, 'Hirsova': 98}, 'Vaslui': {'Urziceni': 142, 'Iasi': 92}, 'Zerind': {'Arad': 75, 'Oradea': 71} } def dfs(start, goal, path=[]): path = path + [start] if start == goal: return path if start not in romania_map: return None for city in romania_map[start]: if city not in path: dfs_path = dfs(city, goal, path) if dfs_path: return dfs_path return None path = dfs('Arad', 'Bucharest') for city in path: print(f'Point {city} is Lightened') ``` 此代码使用深度优先搜索算法在罗马尼亚地图中找到从阿拉德到布加勒斯特的最短路径,并逐个点亮路径中的城市。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值