下载 App

程序员模拟器不完整普通攻略

修改于51 分钟前380 浏览攻略
1.质数
引入算法效率概念,利用数学性质(平方根)优化验证范围
通过从2到其平方根的试除来验证,一旦发现可整除的数则立即中断,以此高效判断质数
limit:是Math.sqrt(n)(n 的平方根)的计算结果,它是一个临时变量,用来存储我们循环检查的上限值
Math.sqrt(n):JavaScript内置的数学函数,用于计算一个数 n 的平方根
TapTap
2.上楼梯
next:一个临时变量,在动态规划的滑动窗口更新中充当 “中转站” ,用于安全地存储新计算出的结果,防止在更新其他状态变量时丢失数据
TapTap
3.最大公约数
gcd:最大公约数 的英文缩写,全称为 Greatest Common Divisor
欧几里得算法公式:gcd(a, b) = gcd(b, a mod b)
通用公式:
gcd(a, b)   = gcd(b, a)
            = gcd(|a|, |b|)
            = gcd(a, b mod a)   // 如果a≠0
Math.abs() :JavaScript 中的一个内置数学函数,用于返回一个数字的绝对值
Math:JavaScript 的内置数学对象,包含各种数学函数和常量
abs:"absolute"(绝对值)的缩写
欧几里得算法:或称辗转相除法,是计算两个正整数最大公约数的高效算法
TapTap
4.最小公倍数
lcm:最小公倍数的英文缩写,全称为Least Common Multiple
公式:lcm = a × b ÷ gcd(a, b)
TapTap
5.斐波那契数列
递推公式:F(n) = F(n-1) + F(n-2) 
比内公式:F(n) = (φ^n - (-φ)^(-n)) / √5
prev和curr是在迭代计算斐波那契数列时使用的两个关键变量
prev:代表前一个斐波那契数 即F(n-2)
curr:代表当前斐波那契数 即F(n-1)
TapTap
6.数字根
digital root:把一个大数字"压缩"成一个0-9的个位数,是数学中的简化工具,也是编程中的实用函数
1. 把数字拆成各位数字
2. 将所有数字相加得到和
3. 如果和≥10,重复步骤1-2
4. 直到得到个位数
TapTap
7.最大值
findMax:"找最大值"的函数,输入一堆数字,输出其中最大的那个
TapTap
8.和
sum:求和、总和
Array:数组
sumArray:求数组元素的和
total:总计、总和
i:index的缩写,表示索引、下标
arr:array的缩写,数组
length:长度
arr.length:数组的长度(元素个数)
function sumArray(arr) {
    let total = 0
    let i = 0
   
    while (i < arr.length) {
        total = total + arr[i]
        i = i + 1
    }
   
    return total
}
return sumArray(输入)
9.罗马数字
romanToInt:罗马转整数的函数
romanMap:字符到数值的映射表
currentVal/nextVal:用于实现减法规则
int:integer(整数)的缩写
Roman:罗马、罗马数字
intToRoman:整数转罗马数字的函数
values:数值数组
symbols:符号数组
result:结果字符串
function r(s){
    let sum=0
    let i=0
    while(i<s.length){
        let c=s[i]
        let v=0
        if(c=='I')v=1
        if(c=='V')v=5
        if(c=='X')v=10
        if(c=='L')v=50
        if(c=='C')v=100
        if(c=='D')v=500
        if(c=='M')v=1000
       
        let nv=0
        if(i+1<s.length){
            let nc=s[i+1]
            if(nc=='I')nv=1
            if(nc=='V')nv=5
            if(nc=='X')nv=10
            if(nc=='L')nv=50
            if(nc=='C')nv=100
            if(nc=='D')nv=500
            if(nc=='M')nv=1000
        }
        if(v<nv){
            sum=sum+nv-v
            i=i+2
        }else{
            sum=sum+v
            i=i+1
        }
    }
    return sum
}
return r(输入)
10.有效括号
stack(栈):后进先出,像一摞盘子
push(压入):往栈顶加元素
pop(弹出):从栈顶取元素
top(栈顶):最后一个放入的元素
empty stack(空栈):栈里没东西
match(匹配):左右括号是同一对
遇到左括号 ( [ { → 放进盒子(放在最上面)
遇到右括号 ) ] } → 从盒子最上面拿出一个,看看是不是一对
是 → 继续
不是 → 失败
如果盒子里没东西了(空)却来了右括号 → 失败
最后,盒子必须是空的 → 成功
function f(s){
    let stack=[]
    let i=0
    while (i<s.length ){
        let c=s[i]
        if (c==='('||c==='['||c==='{' ){
            stack.push(c)
        }else {
            if (stack.length===0 ){
                return false               
            }
            let top=stack.pop()
            if (c===')'&&top!=='(' )return false
            if (c===']'&&top!=='[' )return false
            if (c==='}'&&top!=='{' )return false     
        }
       
        i=i+1
    }
    return stack.length===0
}
return f(输入)
11.合并有序数组
sorted(有序):数组里的数字按从小到大(或从大到小)排列,比如 [1, 3, 5] 就是有序的
merge(合并):把两个东西合在一起
这里就是把两个数组拼成一个
two pointers(双指针):用两个“手指”分别指着两个数组当前要比较的位置
谁小就把谁放进结果里,然后移动对应的手指
pointer(指针):数组的索引,表示当前读到哪个位置了
function m(a, b) {
    let r = []
    let i = 0
    let j = 0
   
    while (i < a.length && j < b.length) {
        if (a[i] < b[j]) {
            r.push(a[i])
            i = i + 1
        } else {
            r.push(b[j])
            j = j + 1
        }
    }
   
    while (i < a.length) {
        r.push(a[i])
        i = i + 1
    }
   
    while (j < b.length) {
        r.push(b[j])
        j = j + 1
    }
   
    return r
}
return m(输入[0], 输入[1])
12.岛屿数量
网格(grid):二维数组,每个格子存一个字符 '1' 或 '0'。
岛屿(island):上下左右连成一片的 '1' 组成的区域。
深度优先搜索(DFS):从某个 '1' 开始,一路向四个方向走到底,把所有能走到的 '1' 都标记为已访问,这样就能找到一个完整的岛屿。
标记(mark):把走过的 '1' 变成 '0',防止重复计算。
相邻(adjacent):上下左右四个方向,不算对角线。
遍历地图 → 遇1则计数 → 淹掉整个岛 → 继续遍历 → 完事
function n(grid) {
    if (!grid || grid.length === 0) return 0
    let rows = grid.length
    let cols = grid[0].length
    let count = 0
    let i = 0
    while (i < rows) {
        let j = 0
        while (j < cols) {
           
            if (grid[i][j] == 1) {
                count = count + 1
                dfs(i, j)
            }
            j = j + 1
        }
        i = i + 1
    }
    function dfs(r, c) {
       
        if (r < 0 || r >= rows || c < 0 || c >= cols || grid[r][c] != 1) return
       
        grid[r][c] = 0
        dfs(r - 1, c)
        dfs(r + 1, c)
        dfs(r, c - 1)
        dfs(r, c + 1)
    }
    return count
}
return n(输入)
13.两数之和
目标值(target):要找的两个数加起来等于的那个数
哈希表(hash table):一种用键值对存储数据的数据结构,可以快速查找某个值是否存在
在JavaScript 里可以用普通对象 {} 或 Map 模拟
下标(index):数组元素的位置,从 0 开始数
暴力枚举(brute force):把所有可能的两数组合都试一遍,找出符合条件的
变量a=输入[0]
变量b=输入[1]
变量c=0
while (变量c<变量a.length ){
    变量d=变量c+1
     while (变量d<变量a.length ){
          if (变量a[变量c]+变量a[变量d]==变量b){
             return [变量c,变量d]   
          }
          变量d=变量d+1
    }
    变量c=变量c+1
}
return [-1,-1]
猜你想搜
程序员模拟器 欧几里得算法
程序员模拟器入门攻略截图
程序员模拟器入门攻略
1.输出1 2.加一 进行最简单的递增运算 3.相反数 算术运算与“正负性”的概念,将输入值取反 4.判断正数 比较运算,并返回布尔值(true/false) 5.绝对值 条件分支(if-else),根据输入的不同情况返回不同结果 6.二倍 进行最基本的倍数运算,理解乘法与变量的使用 7.偶数 取余运算(%)在奇偶判断中的应用,并返回布尔值 8.计算正方形面积 应用正方形面积公式(边长的平方),进
32 赞
15 回复
开荒手札:从零开始的食谱与制造截图
开荒手札:从零开始的食谱与制造
本攻略基于前中期游戏进度制作,我会随着等级提升不断补充新内容。 如果你也是新手,欢迎参考; 如果你是大佬,也欢迎在评论区进行补充或者指正! 烹饪锅 肉*4=烤肉 鱼*4=烤鱼 水果*4=果汁 辣椒*4=辣酱 牛奶*4=奶酪 蜂蜜*4=蜜糖 面粉*4=面包 鸡蛋/鸵鸟蛋*4=煎蛋(鸵鸟蛋能出4个煎蛋) 南瓜*4=南瓜饼 玉米*4=爆米花 草莓*4=草莓酱 蓝果*4=蓝果酱 葡萄*4=葡萄干 马铃薯*
114 赞
65 回复
无人城市第五关~第八关攻略截图
无人城市第五关~第八关攻略
第五关 走向道闸前方 来到公路上 先捡起人行道上的铲子 再走向左侧楼梯 拿起长椅下的水桶 再从花坛里得到几块金属零件 用铲子挖开树底下鼓起的土包 得到一个铁盒 回到人行道上 在电线杆上装上用来爬电线杆的踩踏用螺丝钉 然后爬上电线杆 得到电线杆上挂着的塑料袋 发现袋上的图案与公路上的图案相同 ↓←←去海边 用水桶打海水 →→冲洗干净公路上的污渍 冲洗干净污渍后发现上面的图案如同迷宫一般 把塑料
299 赞
78 回复
01:36
山海旅人夜行柳渡:溯梦寻踪,逆命改因截图
山海旅人夜行柳渡:溯梦寻踪,逆命改因
我是逆梦之源 周隐山 我的力量非潜入宿命 而是重塑宿命本身 我的使命非治愈因果 而是以全部存在为基石 为后世所有因果 开辟最初的圣坛 这一次逆梦 燃烧的并非心神 是逆梦师存在的根本 当圣坛强行打开 我所背负的一切 便成为了 后世必将踏上的漫漫长路 抵达柳家村后 在村北找到在地上围坐聊天的村民 前往旧庙左侧 驱除妖藤(观察弱点的圆圈颜色 将对应的元素拖到圆圈 注意往旁边跑开躲避尖刺攻击) 在分岔路口
10 赞
8 回复
爬楼梯我的攻略截图
爬楼梯我的攻略
解法思路就是先发现了规律,楼梯每多一级就是前3个相加,类似斐波那契数列(前两个数相加)
1 赞
1 回复
神明也没猜到结局 · 解题思路截图
神明也没猜到结局 · 解题思路
需要昼夜交替进行游玩! 点击风铃可昼夜交替 推主线需要倒叙 多留意白天的晴天娃娃 昼之章 · 其壹 精彩提问: 是很轻薄的物品吗? 我当时是否在移动? 我当时是否在排队? 这张纸是一张门票吗? 精彩提问: 战斗发生的地点重要吗? 战斗发生在城堡里吗? 这场胜利对公爵而言微不足道吗? 公爵还要面对其他敌人吗? 公爵可以战胜这些敌人吗? 公爵已经被其他敌人包围了吗? 战斗发生在某人的卧室吗? 精彩提
144 赞
8 回复
山河旅探:春节特别篇·幽影密训截图
山河旅探:春节特别篇·幽影密训
隐藏章 引 进入隐藏章节 长按气泡框 则不达 丁未 根据图中提示点开解锁新章节 前往铁厂后院—实验室(多点跳过) 看图数数 连接对应字 08 10 06 05 哔站用户 01 02 03 04 亦久伊凌 搜索亦久伊凌 观看橡胶股灾视频得到进入庚子章节的线索 庚子 依次找到5处地址 它们分别是罗世文家门口、右侧村口、高老板早餐摊附近、衙门口书摊和铁匠铺。 分别可以得到答案:47、93、60、87、7
99 赞
20 回复
最大/小公约/倍数截图
最大/小公约/倍数
有确定的范围,可以直接用while循环做排除法。
3 赞
白嫖十连,精灵抽奖劵等奖励截图
白嫖十连,精灵抽奖劵等奖励
在图里所标记的地方填充色彩可以免费获得十连劵,钻石花朵盲盒,以及精灵抽奖劵等各种奖励。 图里标记均为简写 十是十连抽奖劵,钻/花是钻石和花朵盲盒,鹿喵犬是精灵抽奖劵,信是介绍信,药是体力药水,bus是车票 博物馆 售票处 检票处 综合一层 综合二层 书画馆三层 瓷器馆四层 研究所 街区 还有各种罐头,粮食的标记稍后空闲的时候再进行补充 后续来啦 emoji图对应文字 🐱猫粮,🐶狗粮,🦌鹿粮,🥫罐头
精华
291 赞
21 回复
60只杰瑞阵图 一家人就要整整齐齐的截图
60只杰瑞阵图 一家人就要整整齐齐的
你们咋不合群呢 为什么有的不穿衣服
8 赞
10 回复