【Luogu】P1013进制位(搜索)
这题和虫食算比较类似。做完这道题可以去做虫食算。都是搜索一类的题。
这样 我们分析题目可以发现进制只可能是字母的个数,也就是n-1。为什么?
因为题目要求完整的加法表才算数。如果进制低于n-1,字母就多了;如果进制高,字母就不够,凑不出一个完整的加法表。所以这题第二问比第一问简单很多。
再说第一问。可以使用搜索,dfs参数是已经搜的字符个数,如果等于n-1判断是否合法,合法就可以输出答案退出程序,不合法就继续搜。在dfs的时候可以枚举有哪些字符是没用过的,再枚举哪些数字是没用过的,一一对应。数据范围很小,可以轻松搞定。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<map>
using namespace std;
int Map[],jd[];
int n;
char s[];
char mp[][][];
char que[];
bool vis[]; bool Check(){
for(int i=;i<=n;++i){
for(int j=;j<=n;++j){
char a=jd[que[i]],b=jd[que[j]];
int c=;
for(int k=;k<strlen(mp[i][j]);++k){
c=c*n+jd[mp[i][j][k]];
}
if(a+b!=c)return ;
}
}
return ;
} void dfs(int deep){
if(deep==n){
if(!Check()){
return;
}
for(int i=;i<=n;++i) printf("%c=%d ",que[i],jd[que[i]]);
printf("\n");
printf("%d",n);
exit();
}
for(int i=;i<n;++i){
if(!vis[i]){
for(int j=;j<=n;j++){
if(jd[que[j]]==-){
vis[i]=;
jd[que[j]]=i;
dfs(deep+);
vis[i]=;
jd[que[j]]=-;
}
}
}
}
}
int main(){
cin>>n;
n--;
scanf("%s",s);
for(int i=;i<=n;++i){
scanf("%s",s);
Map[s[]]=i;
que[i]=s[];
jd[s[]]=-;
}
for(int i=;i<=n;++i){
scanf("%s",s);
char ch=s[];
for(int j=;j<=n;++j){
scanf("%s",s);
for(int k=;k<strlen(s);++k)
mp[Map[ch]][j][k]=s[k];
}
}
dfs();
printf("ERROR!");
return ;
}
【Luogu】P1013进制位(搜索)的更多相关文章
- 洛谷P1013 进制位
P1013 进制位 题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E ...
- 洛谷 P1013 进制位
P1013 进制位 题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E ...
- 洛谷 P1013 进制位 【搜索 + 进制运算】
题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E KL KK E E ...
- noip 1998 洛谷P1013 进制位
题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: L K V E L L K V E K K V E KL V V E KL KK E E K ...
- [NOIP1998] 提高组 洛谷P1013 进制位
题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: L K V E L L K V E K K V E KL V V E KL KK E E K ...
- [NOIP1999]进制位(搜索)
P1013 进制位 题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E ...
- [洛谷 P1013] NOIP1998 提高组 进制位
问题描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: L K V E L L K V E K K V E KL V V E KL KK E E K ...
- P1013 [NOIP1998 提高组] 进制位
解析 看到这道题时,有没有想到搜索?然后就是一通码......然后过了. 但是,真的要用搜索吗? 我们可以观察一下.对于n进制中的数ii,如果ii加上某一个数jj会变成两位数,那么可以得到如下不等式: ...
- luogu P1017 进制转换
感觉这个题 是真的恶心 本来单纯就递归写,发现好难 后来用数组记录 然后考虑 指数为 奇和偶数 分别 <0 和 > 进制的情况 其实 用进制数为3 大概讨论四种情况就可以了 由于最近就是在 ...
随机推荐
- arcgis jsapi接口入门系列(1):地图
地图相关 //地图相关demo mapFun: function () { //获取地图中心点 let center = this.mapView.center; //地图中心点坐标(同地图坐标系) ...
- rxjava封装,RxBus封装(上线项目集成,声明周期管理,处理溢出内存,支持同时多个请求。)
Github地址 RxLibrary工程:1.rxjava2 + retrofit2的封装,常用的请求(Get,Post,文件上传,文件下载),防止内存泄漏,简单便捷,支持自定义loading等属性. ...
- vijos 1190 繁忙的都市
描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路 ...
- asp.net mvc集成log4net
第一步:在web项目的引用中添加log4net.dll,可以通过Nuget直接下载并安装: 第二步:在web项目的web.config配置文件的configuration节点内添加log4net节点, ...
- ipsec配置strongswan.conf和ipsec.conf
配置strongswan.conf vi /usr/local/etc/strongswan.conf # strongswan.conf - strongSwan configuration fil ...
- stringstream类的简介和用法
一.简介 <sstream>类库定义了三种类:istringstream,ostringstream,stringstream.分别用来进行流的输入,流的输出,输入输出操作.在此演示str ...
- Html5怎么导出图片
其实很简单, 首先需要两个js文件 jquery.min.js html2canvas.js 直接上代码,几行就解决了 <a id="example1" onclick=&q ...
- python基础一 day14 生成器函数进阶
def generator(): print(123) content = yield 1 print('=======',content) print(456) arg = yield 2 '''' ...
- Mac 安装和卸载 Mysql5.7.11 的方法
安装 去http://www.mysql.com/downloads/, 选择最下方的MySQL Community Edition,点击MySQL Community Server的download ...
- Codeforces Round #272 (Div. 2)-A. Dreamoon and Stairs
http://codeforces.com/contest/476/problem/A A. Dreamoon and Stairs time limit per test 1 second memo ...