算法
Viende
这个作者很懒,什么都没留下…
展开
-
枚举:假币问题
林克有12枚银币。其中有11枚真币和1枚假币。假币看起来和真币没有区别,但是重量不同。但林克不知道假币比真币轻还是重。于是他向他朋友约珥借了一架天平,用这架天平称了这些币三次。如果用天平称两枚硬币,发现天平平衡,说明两枚都是真的。如果用一枚真币与另一枚银币比较,发现它比真币轻或重,说明它是假币。经过精心的设计,聪明的林克根据这三次称量结果找出假币,并且能够确定假币是轻是重。如果给你林克的称量数据,你也可以找出假币并且确定假币是轻是重吗?(林克提供的称量数据保证一定能找出假币)。输..原创 2021-06-29 16:51:15 · 810 阅读 · 1 评论 -
枚举---熄灯问题c++
==核心思想==:枚举的局部性。x--->y 如果x很大,无法枚举。name可以枚举y来代替结果。用y推导出所有结果。第一行的状态会决定全部消去的最后一行的状态。---------------------------------------------------------------------有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被.原创 2021-06-29 16:49:10 · 429 阅读 · 0 评论 -
汉诺塔II
有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。问:如何移?最少要移动多少次?输入>输入为一个整数后面跟三个单字符字符串。整数为盘子的数目,后三个字符表示三个杆子的编号。输出>输出每一步移动盘子的记录。一次移动一行。每次移动的记录为例如3:a-...原创 2021-06-29 16:46:43 · 132 阅读 · 0 评论 -
快速幂c++
a^b^ %c瓜分b的时候,分奇偶。偶数再分到最后,就只剩下1这一个奇数。#include<bits/stdc++.h>using namespace std;long long fast(long long base, long long power,long long c) { long long result = 1; while (power > 0) { if (power % 2 == 0) { //如果指数原创 2021-06-29 16:44:43 · 115 阅读 · 0 评论 -
双递归 2的幂方表示
输入样例 1137输出样例 12(2(2)+2+2(0))+2(2+2(0))+2(0)#include<stdio.h>#define MAXSCALE 17void PrintPT(int i, int Power[]);void PrintNPT(int input, int Power[]);int main(){ int Data, Power[MAXSCALE + 1] = { 1 }; for (int i = 1;...原创 2021-06-29 16:42:29 · 72 阅读 · 0 评论 -
递归 波兰(前缀)表达式
#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;double cal(double a,char b,double c){ switch (b) { case '+': { return a + c; } case '-': { return c - a;//先读入的是被减数 } case '*': { return a * c; }..原创 2021-06-29 16:40:58 · 184 阅读 · 0 评论