Vijos P1596 加法表【迭代】
来源:互联网 发布:绝地求生大逃杀优化差 编辑:程序博客网 时间:2024/06/08 12:16
加法表
背景
神奇的加法表~
描述
著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字。
例如:
+ 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 EL L K V EK K V E KLV V E KL KKE E KL KK KV
样例输出1
L=0 K=1 V=2 E=34
限制
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,进位位1 for(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;}
阅读全文
0 0
- Vijos P1596 加法表【迭代】
- 迭代加深搜索 + dp vijos 1159
- 【Vijos-P1308】埃及分数-迭代加深DFS+分数表示法
- 【codevs 1288】【vijos P1308】埃及分数(迭代加深搜)
- 加法表
- [vijos 1333]Cantor表
- 迭代
- 迭代
- 迭代
- 迭代
- 迭代
- 迭代
- 迭代
- 迭代
- 迭代
- 迭代
- 迭代
- 迭代
- JavaScript:==和===区别
- js进阶的流程,我们到底在哪个阶段,要看什么
- DIV遮盖层(实现UL控件的下拉按钮不可用)
- leetcode算法题2: 合并两个二叉树。递归,如何切入并保持清醒?
- Visual Stuido Code快捷键大全
- Vijos P1596 加法表【迭代】
- Spring Cloud源码分析(二)Ribbon
- Vue中怎么动态的去插入DOM节点呢?
- 例4.8 含有对象成员的派生类构造函数和析构函数的执行顺序
- Android比较优秀的开源项目
- 南阳ID:96 cigarettes
- 类多继承
- java.util.concurrent包图文源码解析(一)——CountDownLatch
- 数组元素循环右移问题