加法表

背景

神奇的加法表~

描述

著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字。
例如:
+ L K V E
L L K V E
K K V E KL
V V E KL KK
E E KL KK KV

其含义为:L+L=L,L+K=K,L+V=V,L+E=E,K+L=K,K+K=V,K+V=E,K+E=KL,……E+E=KV
根据这些规则可推导出:L=0,K=1,V=2,E=3
同时,可以确定该表表示的是4进制加法

格式

输入格式

n(n<=11),表示行数,以下N行,n(n<=11),表示行数,以下N行,每行N个字符串,每个字符串间用空格隔开。(字符串中仅第一行有一个为"+"号,其他都由大写字母组成)

输出格式

第一行为各个字母表示什么数,格式如:L=0 K=1 …… (字符按第一行的输入顺序输出)
第二行为加法运算是几进制的
若不可能组成加法表,则应输出"Wrong!"

样例1

样例输入1

5
+ L K V E
L L K V E
K K V E KL
V V E KL KK
E E KL KK KV

样例输出1

L=0 K=1 V=2 E=3
4

限制

1s

提示

有多种神奇方法可以解决~
注意检验!

来源

Noip 1998

问题链接:Vijos P1596 加法表

问题分析:字母表示的加法表验证问题。

程序说明

用暴力法(或DFS)必然TLE。

这里采用迭代法,样例程序可以通过,然而程序提交后WA,哪位帮忙解决一下!

题记:(略)

参考链接:(略)

WA的C++程序如下:

#include <iostream>
#include <string>
#include <map>using namespace std;const int N = 11;
string s[N][N];
int ans[N];
int n, count;
bool flag;map<char, int> o;int main()
{cin >> n;for(int i=0; i<n; i++)for(int j=0; j<n; j++)cin >> s[i][j];for(int i=1; i<n; i++) {ans[i] = -1;o[s[0][i][0]] = i;}// 查找0,进位位1for(int i=1; i<n; i++) {if(s[i][i].length() == 1) {if(s[i][i] == s[0][i] ) {ans[i] = 0;}} else if(s[i][i].length() == 2) {ans[o[s[i][i][0]]] = 1;}}// 4次迭代计算for(int k=1; k<=4; k++) {for(int i=1; i<n; i++)for(int j=1; j<n; j++)if(ans[i] != -1 && ans[j] != -1) {if(s[i][j].length() == 1) {ans[o[s[i][j][0]]] = ans[i] + ans[j];} else if(s[i][j].length() == 2) {ans[o[s[i][j][1]]] = (ans[i] + ans[j]) % (n - 1);}}}// 输出结果for(int i=1; i<n; i++) {if(i != 1)cout << " ";cout << s[0][i] << "=" << ans[i];}cout << endl;cout << n - 1 << endl;return 0;
}

Vijos P1596 加法表【迭代】相关推荐

  1. 【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流

    http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ ...

  2. 完全理解Python迭代对象、迭代器、生成器

    本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文的中译版本,推荐阅读原文,谢谢网 ...

  3. 迭代是人,递归是神(迭代与递归的总结:比较)

    https://www.cnblogs.com/Renyi-Fan/p/7708012.html 在计算机编程实现中有常常两种方法:一曰迭代(iterate):二曰递归(recursion). 从&q ...

  4. 二叉树的前序,中序,后序的递归、迭代实现

    二叉树的前序遍历 递归实现 递归实现没什么好说的.个人感觉将函数功能看成一个整体,不要去想栈中怎么实现的.毕竟自己的脑袋不是电脑,绕着绕着就蒙了. void preordered_traversal_ ...

  5. 消除左递归实验代码_「leetcode」108. 构造二叉搜索树【递归】【迭代】详解!

    构造二叉搜索树,一不小心就平衡了 ❞ 108.将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树 ...

  6. 网上商城代码实现_中国中铁网上商城转型敏捷开发模式,实现快速反应、快速迭代...

    △北研中心的同事给业务部门演示迭代成果中国中铁网上商城成功转型敏捷开发模式,实现快速反应.快速迭代.切实解决公司内部以及合作方的业务需求,更好服务多样化的客户群体.经历了两次每2周为一迭代的短期快速开 ...

  7. python最新版本 效率_Python:迭代列表与dict项目效率

    这取决于您使用的是哪个版本的Python.在Python 2中,some_dict.items()创建一个新列表,这会占用一些额外的时间并占用额外的内存.另一方面,一旦创建了列表,它就是一个列表,因此 ...

  8. python迭代计算_如何在Python中迭代坐标列表并计算它们之间的距离

    我的列表有20个坐标(x和y坐标).我可以计算任意两个坐标之间的距离,但是我很难编写一个算法来迭代列表并计算第一个节点和每个其他节点之间的距离.例如, ListOfCoordinates = [(1, ...

  9. ADPRL - 近似动态规划和强化学习 - Note 8 - 近似策略迭代 (Approximate Policy Iteration)

    Note 8 近似策略迭代 Approximate Policy Iteration 近似策略迭代 Note 8 近似策略迭代 Approximate Policy Iteration 8.1 通用框 ...

最新文章

  1. 查询整个数据库中某个特定值所在的表和字段的方法
  2. Spring Boot 配置线程池使用多线程插入数据
  3. Socket请求获取数据
  4. php中如何定义常量和变量的区别,php define常量定义与变量区别
  5. vue-cli3 编译打包文件的压缩优化
  6. 容器编排技术 -- Kubernetes kubectl rollout pause 命令详解
  7. 深入jar包:从jar包中读取资源文件
  8. python exec函数和eval函数_Python exec()和eval()的使用注意事项
  9. java MAVEN下载的代码仓库位置 mac
  10. 神经网络图用什么软件做,图神经网络 图像处理
  11. MATLAB图像处理:一分钟去除图片中的雾霾
  12. html刷浏览量,批量刷网页点击量工具
  13. Intellij idea注册激活码(2017年2月15日亲测可用于最新版)
  14. aseprite 中心对称绘制脚本
  15. IO与文件读写---使用Apache commons io包提高读写效率
  16. sql server2012 分页查询语句
  17. 零基础学习CANoe Panel(16)—— Clock Control/Panel Control/Start Stop Control/Tab Control
  18. js中的this及箭头函数
  19. 使用Jquery、HTML、CSS、JS实现下拉菜单列表
  20. ERROR: NMO not setuid-root (Unix-only)

热门文章

  1. .NET——NPOI操作excel
  2. 关于ArcObjects图层编辑的读写编辑锁
  3. apache缺省banner_NSFOCUS建议您采取以下措施以降低威胁: * 修改源代码或者配置文件改变SSH服务的缺省banner。...
  4. 详解:Hive的MetaStore和三种配置方式
  5. 插入模板_巧用Focusky模板制作精美微课
  6. freertos nand flash 读取错误_Flash失效小谈
  7. 循环取矩阵的某行_一文搞懂RNN(循环神经网络)基础篇
  8. java使用poi.xssf 写入内容到excel表格中 和 读取 表格里面的数据
  9. LeetCode112. 路径总和(DFS)(递归)
  10. OpenCV——高效遍历图像(C++版本)