UVA 11198 Dancing Digits
UVA_11198
这个题目是个隐式图搜索的题目,可以把数值和符号分别存在两个数组里面,然后进行广搜即可。
#include<stdio.h>#include<string.h>int st[50000][8],sign[50000][8],dis[50000];int head[1000003],next[50000];int target[8]={1,2,3,4,5,6,7,8};int isprime(int n){int i;for(i=2;i<n;i++)if(n%i==0)return 0;return 1;}int hash(int *A){int i,v=0;for(i=0;i<8;i++) v=10*v+A[i];return v%1000003;}int insert(int s){int i,h; h=hash(st[s]);for(i=head[h];i!=-1;i=next[i])if(memcmp(st[i],st[s],sizeof(st[i]))==0)break;if(i==-1) { next[s]=head[h]; head[h]=s;return 1; }elsereturn 0;}int main(){int i,j,k,p,q,front,rear,t; t=0;while(1) { scanf("%d",&st[0][0]);if(st[0][0]==0)break;if(st[0][0]<0) { st[0][0]=-st[0][0]; sign[0][0]=0; }else sign[0][0]=1;for(i=1;i<8;i++) { scanf("%d",&st[0][i]);if(st[0][i]<0) { st[0][i]=-st[0][i]; sign[0][i]=0; }else sign[0][i]=1; } front=rear=0; memset(head,-1,sizeof(head)); insert(rear); dis[rear]=0; rear++;while(front<rear) {if(memcmp(st[front],target,sizeof(target))==0)break;for(i=0;i<8;i++) {for(j=0;j<i;j++)if((j!=0&&(sign[front][i]^sign[front][j-1])&&isprime(st[front][i]+st[front][j-1]))||((sign[front][i]^sign[front][j])&&isprime(st[front][i]+st[front][j]))) { memcpy(st[rear],st[front],sizeof(st[rear])); memcpy(sign[rear],sign[front],sizeof(sign[rear])); p=st[rear][i]; q=sign[rear][i];for(k=i;k>j;k--) { st[rear][k]=st[rear][k-1]; sign[rear][k]=sign[rear][k-1]; } st[rear][j]=p; sign[rear][j]=q;if(insert(rear)) { dis[rear]=dis[front]+1; rear++; } }for(j=i+1;j<8;j++)if((j!=7&&(sign[front][i]^sign[front][j+1])&&isprime(st[front][i]+st[front][j+1]))||((sign[front][i]^sign[front][j])&&isprime(st[front][i]+st[front][j]))) { memcpy(st[rear],st[front],sizeof(st[rear])); memcpy(sign[rear],sign[front],sizeof(sign[rear])); p=st[rear][i]; q=sign[rear][i];for(k=i;k<j;k++) { st[rear][k]=st[rear][k+1]; sign[rear][k]=sign[rear][k+1]; } st[rear][j]=p; sign[rear][j]=q;if(insert(rear)) { dis[rear]=dis[front]+1; rear++; } } } front++; } printf("Case %d: ",++t);if(front!=rear) printf("%d\n",dis[front]);else printf("-1\n"); }return 0; }
转载于:https://www.cnblogs.com/staginner/archive/2011/09/18/2180596.html
UVA 11198 Dancing Digits相关推荐
- 11198 - Dancing Digits
描述:坑人的一道题,不过也不难,就是数字交换,只有一正一负的数字才存在交换,并且交换之后不能形成素数 #include <cstdio> #include <cstdlib> ...
- UVA 11452 Dancing the Cheeky-Cheeky
UVA 11452 "Dancing the Cheeky-Cheeky" 找循环节那里要从后往前找,以解决112234112234这样的数据 #include <bits/ ...
- 提取了下刘汝佳推荐的题号...
今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started 10055 - Hashmat the Brave Warrior ...
- UVa11452 Dancing the Cheeky-Cheeky(kmp)
使用kmp算法求得字符串的周期,然后根据长度以及周期找到字符串输出位置 代码参考: OJ/UVa/11452 Dancing the Cheeky-Cheeky at master · wuli249 ...
- 前缀函数及kmp算法
1.字符串基础 1.1 字符集 一个字符集是一个建立了全序关系的集合,也就是说中的任意两个不两只的元素和都可以比较大小,要么,要么.字符集中的元素称为字符. 1.2 字符串 一个字符串S是将n个字符顺 ...
- Prefix function. Knuth–Morris–Pratt algorithm
Prefix function. Knuth–Morris–Pratt algorithm Prefix function definition You are given a string \(s\ ...
- UVA - 10061 How many zero#39;s and how many digits ?
n!=x*b^y, 当x为正整数时,最大的y就是n!末尾0的个数了, 把n,b分别拆成素因子相乘的形式: 比如, n=5,b=16 n=5,b=2^4, 非常明显,末尾0的个数为0 10进制时,n!= ...
- UVa 10061 How many zero's and how many digits?
方法: factorial mod, logarithm 求trailing zeros,其实就是factorial mod 的应用, 求长度,利用log 函数.需要注意的是,答案为int(log(n ...
- uva 10061——How many zero\'s and how many digits ?
题意:这道题开始是卡了很久的,题意是给定一个数n然后让你求B进制下n!有多少个零,和有多少位数,咋一看,是高精度,如果数论不是很熟系. 思路:开始是直接抛弃高精度的一来是存不下,二来没办法短时间计算出 ...
最新文章
- 3rd_party/flatbuffers/tmp/flatc: No such file or directory
- 【OpenGL】四、Visual Studio 2019 配置 GitHub ( 从 GitHub 上克隆项目 )
- Python编程基础:第四节 类型转换Type Cast
- 业务场景是什么意思_深度思考:麦乐积分兑换商城系统业务逻辑
- Layui中Jquery动态设置的select标签加载时而正常时而失效问题排查和解决
- python中repeat函数用法
- python字典的遍历方法_遍历python字典几种方法
- SAP 电商云 Spartacus 5_0.md 迁移文档的编写格式
- 每台计算机需要配置网关吗,每台计算机的IP地址和网关以及子网掩码的设置有哪些规律或者规则吗?...
- 毕业设计论文选题系统系统用例图_基于Web的毕业论文管理系统的设计与实现
- linux打开lua后中文有乱码,总结Lua使用中遇到的小问题
- bottleneck resnet网络_深度学习|图像分类:ResNet(二)
- mysql主从同步读写分离
- Android UI系列-----ScrollView和HorizontalScrollView
- [Android Pro] java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity异常
- svm 文本分类 matlab,livsvm文本分类总结详解
- JSTL-格式标签库
- 【Vue】报错Parsing error: No Babel config file detected for D:\VuecliWorkspace\vue_test\src\main.js.
- wuauclt.exe是什么进程?为什么运行?wuauclt.exe进程介绍
- asp网站如何设置默认页_IIS 7.5 在 Windows Server(R) 2008 R2
热门文章
- 51CTO‘s Bug?
- python遵循什么协议_《Python网络爬虫》2.3 Robots协议的遵守方式
- python的开发环境包括_下搭建 Python 开发环境
- 【系统架构设计师】软考高级职称,一次通过,倾尽所有,看完这篇就够了,论软件架构设计的重要性、本篇论文“未通过考试”,供分析参考
- python函数分为哪几种_python数据挖掘常用工具有哪几种?
- java登陆挤下去代码_application作用域实现用户登录挤掉之前登录用户代码
- php包含文件不存在,PHP包含文件错误,服务器有该文件,直接访问提示不存在
- 语言身高预测实验注意事项_?新预训练模型CodeBERT出世,编程语言和自然语言都不在话下...
- 保研到国防科大计算机,拿奖到“手软” 国防科技大学这个“学霸宿舍”集体保研...
- 程序员 论坛 linux,用了五年Linux,三分钟带你揭开Linux过程内幕