博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
素数判断BFS之“Prime Path”
阅读量:5095 次
发布时间:2019-06-13

本文共 11826 字,大约阅读时间需要 39 分钟。

题目大意:

  给两个素数 a ,b ,在(1033 -- 8179)之间(左闭右闭)。询问将 a 变成 b 的最短步数。

  找不到输出  Impossible  。

  每次只能改变一个数字,千位数字不能出现 0 。而且每次一步改变后的数仍然为素数。

  样例:

      3

      1033 8179

      1373 8017

      1033 1033

      ————————

      6

      7

      0

  解释其中第一个样例:

      1033  -->  1733  -->  3733  -->  3739  -->  3779  -->  8779  -->  8179

  有一个点就是变换后的数字可以超出给定的范围(1033 -- 8179),但是也得是四位非零开头的素数。

  因为读题不细致,愣是WA了好几发。

解题思路:

  和 Catch That Cow 差不多,用 vis[] 记录更新步数。每步都要判断素数。

  队列为零就说明找不到了。

  在判断素数这方面可以打个表。。。。。。

  也可以直接判断。

  注意千位数不能搜索 0 ,个位数可以剪掉 0,2,4,6,8 的分支。

  注意如果使用 Java 语言,这个素数表不要存 String 型,

  否则在用 compareTo 判断相等的时候时间复杂度过高,会超时。

AC代码(骚气的素数表):

1 import java.util.*;  2   3 public class Main{  4   5     static int list[] = {  6              1009 ,1013 ,1019 ,1021 ,1031 ,1033 ,1039 ,1049 ,1051 ,1061 ,1063 ,1069 ,1087 ,1091 ,1093 ,  7                 1097 ,1103 ,1109 ,1117 ,1123 ,1129 ,1151 ,1153 ,1163 ,1171 ,1181 ,1187 ,1193 ,1201 ,1213 ,  8                 1217 ,1223 ,1229 ,1231 ,1237 ,1249 ,1259 ,1277 ,1279 ,1283 ,1289 ,1291 ,1297 ,1301 ,1303 ,  9                 1307 ,1319 ,1321 ,1327 ,1361 ,1367 ,1373 ,1381 ,1399 ,1409 ,1423 ,1427 ,1429 ,1433 ,1439 , 10                 1447 ,1451 ,1453 ,1459 ,1471 ,1481 ,1483 ,1487 ,1489 ,1493 ,1499 ,1511 ,1523 ,1531 ,1543 , 11                 1549 ,1553 ,1559 ,1567 ,1571 ,1579 ,1583 ,1597 ,1601 ,1607 ,1609 ,1613 ,1619 ,1621 ,1627 , 12                 1637 ,1657 ,1663 ,1667 ,1669 ,1693 ,1697 ,1699 ,1709 ,1721 ,1723 ,1733 ,1741 ,1747 ,1753 , 13                 1759 ,1777 ,1783 ,1787 ,1789 ,1801 ,1811 ,1823 ,1831 ,1847 ,1861 ,1867 ,1871 ,1873 ,1877 , 14                 1879 ,1889 ,1901 ,1907 ,1913 ,1931 ,1933 ,1949 ,1951 ,1973 ,1979 ,1987 ,1993 ,1997 ,1999 , 15                 2003 ,2011 ,2017 ,2027 ,2029 ,2039 ,2053 ,2063 ,2069 ,2081 ,2083 ,2087 ,2089 ,2099 ,2111 , 16                 2113 ,2129 ,2131 ,2137 ,2141 ,2143 ,2153 ,2161 ,2179 ,2203 ,2207 ,2213 ,2221 ,2237 ,2239 , 17                 2243 ,2251 ,2267 ,2269 ,2273 ,2281 ,2287 ,2293 ,2297 ,2309 ,2311 ,2333 ,2339 ,2341 ,2347 , 18                 2351 ,2357 ,2371 ,2377 ,2381 ,2383 ,2389 ,2393 ,2399 ,2411 ,2417 ,2423 ,2437 ,2441 ,2447 , 19                 2459 ,2467 ,2473 ,2477 ,2503 ,2521 ,2531 ,2539 ,2543 ,2549 ,2551 ,2557 ,2579 ,2591 ,2593 , 20                 2609 ,2617 ,2621 ,2633 ,2647 ,2657 ,2659 ,2663 ,2671 ,2677 ,2683 ,2687 ,2689 ,2693 ,2699 , 21                 2707 ,2711 ,2713 ,2719 ,2729 ,2731 ,2741 ,2749 ,2753 ,2767 ,2777 ,2789 ,2791 ,2797 ,2801 , 22                 2803 ,2819 ,2833 ,2837 ,2843 ,2851 ,2857 ,2861 ,2879 ,2887 ,2897 ,2903 ,2909 ,2917 ,2927 , 23                 2939 ,2953 ,2957 ,2963 ,2969 ,2971 ,2999 ,3001 ,3011 ,3019 ,3023 ,3037 ,3041 ,3049 ,3061 , 24                 3067 ,3079 ,3083 ,3089 ,3109 ,3119 ,3121 ,3137 ,3163 ,3167 ,3169 ,3181 ,3187 ,3191 ,3203 , 25                 3209 ,3217 ,3221 ,3229 ,3251 ,3253 ,3257 ,3259 ,3271 ,3299 ,3301 ,3307 ,3313 ,3319 ,3323 , 26                 3329 ,3331 ,3343 ,3347 ,3359 ,3361 ,3371 ,3373 ,3389 ,3391 ,3407 ,3413 ,3433 ,3449 ,3457 , 27                 3461 ,3463 ,3467 ,3469 ,3491 ,3499 ,3511 ,3517 ,3527 ,3529 ,3533 ,3539 ,3541 ,3547 ,3557 , 28                 3559 ,3571 ,3581 ,3583 ,3593 ,3607 ,3613 ,3617 ,3623 ,3631 ,3637 ,3643 ,3659 ,3671 ,3673 , 29                 3677 ,3691 ,3697 ,3701 ,3709 ,3719 ,3727 ,3733 ,3739 ,3761 ,3767 ,3769 ,3779 ,3793 ,3797 , 30                 3803 ,3821 ,3823 ,3833 ,3847 ,3851 ,3853 ,3863 ,3877 ,3881 ,3889 ,3907 ,3911 ,3917 ,3919 , 31                 3923 ,3929 ,3931 ,3943 ,3947 ,3967 ,3989 ,4001 ,4003 ,4007 ,4013 ,4019 ,4021 ,4027 ,4049 , 32                 4051 ,4057 ,4073 ,4079 ,4091 ,4093 ,4099 ,4111 ,4127 ,4129 ,4133 ,4139 ,4153 ,4157 ,4159 , 33                 4177 ,4201 ,4211 ,4217 ,4219 ,4229 ,4231 ,4241 ,4243 ,4253 ,4259 ,4261 ,4271 ,4273 ,4283 , 34                 4289 ,4297 ,4327 ,4337 ,4339 ,4349 ,4357 ,4363 ,4373 ,4391 ,4397 ,4409 ,4421 ,4423 ,4441 , 35                 4447 ,4451 ,4457 ,4463 ,4481 ,4483 ,4493 ,4507 ,4513 ,4517 ,4519 ,4523 ,4547 ,4549 ,4561 , 36                 4567 ,4583 ,4591 ,4597 ,4603 ,4621 ,4637 ,4639 ,4643 ,4649 ,4651 ,4657 ,4663 ,4673 ,4679 , 37                 4691 ,4703 ,4721 ,4723 ,4729 ,4733 ,4751 ,4759 ,4783 ,4787 ,4789 ,4793 ,4799 ,4801 ,4813 , 38                 4817 ,4831 ,4861 ,4871 ,4877 ,4889 ,4903 ,4909 ,4919 ,4931 ,4933 ,4937 ,4943 ,4951 ,4957 , 39                 4967 ,4969 ,4973 ,4987 ,4993 ,4999 ,5003 ,5009 ,5011 ,5021 ,5023 ,5039 ,5051 ,5059 ,5077 , 40                 5081 ,5087 ,5099 ,5101 ,5107 ,5113 ,5119 ,5147 ,5153 ,5167 ,5171 ,5179 ,5189 ,5197 ,5209 , 41                 5227 ,5231 ,5233 ,5237 ,5261 ,5273 ,5279 ,5281 ,5297 ,5303 ,5309 ,5323 ,5333 ,5347 ,5351 , 42                 5381 ,5387 ,5393 ,5399 ,5407 ,5413 ,5417 ,5419 ,5431 ,5437 ,5441 ,5443 ,5449 ,5471 ,5477 , 43                 5479 ,5483 ,5501 ,5503 ,5507 ,5519 ,5521 ,5527 ,5531 ,5557 ,5563 ,5569 ,5573 ,5581 ,5591 , 44                 5623 ,5639 ,5641 ,5647 ,5651 ,5653 ,5657 ,5659 ,5669 ,5683 ,5689 ,5693 ,5701 ,5711 ,5717 , 45                 5737 ,5741 ,5743 ,5749 ,5779 ,5783 ,5791 ,5801 ,5807 ,5813 ,5821 ,5827 ,5839 ,5843 ,5849 , 46                 5851 ,5857 ,5861 ,5867 ,5869 ,5879 ,5881 ,5897 ,5903 ,5923 ,5927 ,5939 ,5953 ,5981 ,5987 , 47                 6007 ,6011 ,6029 ,6037 ,6043 ,6047 ,6053 ,6067 ,6073 ,6079 ,6089 ,6091 ,6101 ,6113 ,6121 , 48                 6131 ,6133 ,6143 ,6151 ,6163 ,6173 ,6197 ,6199 ,6203 ,6211 ,6217 ,6221 ,6229 ,6247 ,6257 , 49                 6263 ,6269 ,6271 ,6277 ,6287 ,6299 ,6301 ,6311 ,6317 ,6323 ,6329 ,6337 ,6343 ,6353 ,6359 , 50                 6361 ,6367 ,6373 ,6379 ,6389 ,6397 ,6421 ,6427 ,6449 ,6451 ,6469 ,6473 ,6481 ,6491 ,6521 , 51                 6529 ,6547 ,6551 ,6553 ,6563 ,6569 ,6571 ,6577 ,6581 ,6599 ,6607 ,6619 ,6637 ,6653 ,6659 , 52                 6661 ,6673 ,6679 ,6689 ,6691 ,6701 ,6703 ,6709 ,6719 ,6733 ,6737 ,6761 ,6763 ,6779 ,6781 , 53                 6791 ,6793 ,6803 ,6823 ,6827 ,6829 ,6833 ,6841 ,6857 ,6863 ,6869 ,6871 ,6883 ,6899 ,6907 , 54                 6911 ,6917 ,6947 ,6949 ,6959 ,6961 ,6967 ,6971 ,6977 ,6983 ,6991 ,6997 ,7001 ,7013 ,7019 , 55                 7027 ,7039 ,7043 ,7057 ,7069 ,7079 ,7103 ,7109 ,7121 ,7127 ,7129 ,7151 ,7159 ,7177 ,7187 , 56                 7193 ,7207 ,7211 ,7213 ,7219 ,7229 ,7237 ,7243 ,7247 ,7253 ,7283 ,7297 ,7307 ,7309 ,7321 , 57                 7331 ,7333 ,7349 ,7351 ,7369 ,7393 ,7411 ,7417 ,7433 ,7451 ,7457 ,7459 ,7477 ,7481 ,7487 , 58                 7489 ,7499 ,7507 ,7517 ,7523 ,7529 ,7537 ,7541 ,7547 ,7549 ,7559 ,7561 ,7573 ,7577 ,7583 , 59                 7589 ,7591 ,7603 ,7607 ,7621 ,7639 ,7643 ,7649 ,7669 ,7673 ,7681 ,7687 ,7691 ,7699 ,7703 , 60                 7717 ,7723 ,7727 ,7741 ,7753 ,7757 ,7759 ,7789 ,7793 ,7817 ,7823 ,7829 ,7841 ,7853 ,7867 , 61                 7873 ,7877 ,7879 ,7883 ,7901 ,7907 ,7919 ,7927 ,7933 ,7937 ,7949 ,7951 ,7963 ,7993 ,8009 , 62                 8011 ,8017 ,8039 ,8053 ,8059 ,8069 ,8081 ,8087 ,8089 ,8093 ,8101 ,8111 ,8117 ,8123 ,8147 , 63                 8161 ,8167 ,8171 ,8179 ,8191 ,8209 ,8219 ,8221 ,8231 ,8233 ,8237 ,8243 ,8263 ,8269 ,8273 , 64                 8287 ,8291 ,8293 ,8297 ,8311 ,8317 ,8329 ,8353 ,8363 ,8369 ,8377 ,8387 ,8389 ,8419 ,8423 , 65                 8429 ,8431 ,8443 ,8447 ,8461 ,8467 ,8501 ,8513 ,8521 ,8527 ,8537 ,8539 ,8543 ,8563 ,8573 , 66                 8581 ,8597 ,8599 ,8609 ,8623 ,8627 ,8629 ,8641 ,8647 ,8663 ,8669 ,8677 ,8681 ,8689 ,8693 , 67                 8699 ,8707 ,8713 ,8719 ,8731 ,8737 ,8741 ,8747 ,8753 ,8761 ,8779 ,8783 ,8803 ,8807 ,8819 , 68                 8821 ,8831 ,8837 ,8839 ,8849 ,8861 ,8863 ,8867 ,8887 ,8893 ,8923 ,8929 ,8933 ,8941 ,8951 , 69                 8963 ,8969 ,8971 ,8999 ,9001 ,9007 ,9011 ,9013 ,9029 ,9041 ,9043 ,9049 ,9059 ,9067 ,9091 , 70                 9103 ,9109 ,9127 ,9133 ,9137 ,9151 ,9157 ,9161 ,9173 ,9181 ,9187 ,9199 ,9203 ,9209 ,9221 , 71                 9227 ,9239 ,9241 ,9257 ,9277 ,9281 ,9283 ,9293 ,9311 ,9319 ,9323 ,9337 ,9341 ,9343 ,9349 , 72                 9371 ,9377 ,9391 ,9397 ,9403 ,9413 ,9419 ,9421 ,9431 ,9433 ,9437 ,9439 ,9461 ,9463 ,9467 , 73                 9473 ,9479 ,9491 ,9497 ,9511 ,9521 ,9533 ,9539 ,9547 ,9551 ,9587 ,9601 ,9613 ,9619 ,9623 , 74                 9629 ,9631 ,9643 ,9649 ,9661 ,9677 ,9679 ,9689 ,9697 ,9719 ,9721 ,9733 ,9739 ,9743 ,9749 , 75                 9767 ,9769 ,9781 ,9787 ,9791 ,9803 ,9811 ,9817 ,9829 ,9833 ,9839 ,9851 ,9857 ,9859 ,9871 , 76                 9883 ,9887 ,9901 ,9907 ,9923 ,9929 ,9931 ,9941 ,9949 ,9967 ,9973 77     }; 78  79     static int check(int x){ 80         for(int i = 0;i < list.length;i ++){ 81             if(list[i] == x){
return 1;} 82 } 83 return 0; 84 } 85 86 public static void main(String[] args){ 87 Scanner sc = new Scanner(System.in); 88 int T = sc.nextInt(); 89 while(T > 0){ 90 int flag = 0; 91 int vis[] = new int[10000]; 92 for(int i = 0;i < 10000;i ++){ 93 vis[i] = 0; 94 } 95 Queue
m = new LinkedList
(); 96 int st = sc.nextInt(); 97 int ed = sc.nextInt(); 98 if(st == ed){System.out.println("0");T --;continue;} 99 m.offer(st);100 vis[st] = 1;101 while( m.size() != 0 && flag == 0){102 int tmp = m.peek(); 103 m.poll();104 String tt = String.valueOf(tmp);105 int tho = String.valueOf(tmp).charAt(0) - '0';106 int hun = String.valueOf(tmp).charAt(1) - '0';107 int dec = String.valueOf(tmp).charAt(2) - '0';108 int uni = String.valueOf(tmp).charAt(3) - '0';109 110 //System.out.print(tho);111 //System.out.print(hun);112 //System.out.print(dec);113 //System.out.println(uni);114 115 for(int i = 1;i <= 9;i ++){116 if(i != tho){117 String _t = String.valueOf(i) + tt.substring(1);118 int t = Integer.valueOf(_t);119 if(check(t) == 1 && vis[t] == 0){m.offer(t);vis[t] = vis[tmp] + 1;}120 if(t == ed){flag = 1;break;}121 }122 }123 for(int i = 0;i <= 9;i ++){124 if(i != hun){125 String _t = tt.substring(0,1) + String.valueOf(i) + tt.substring(2);126 int t = Integer.valueOf(_t);127 if(check(t) == 1 && vis[t] == 0){m.offer(t);vis[t] = vis[tmp] + 1;}128 if(t == ed){flag = 1;break;}129 }130 }131 for(int i = 0;i <= 9;i ++){132 if(i != dec){133 String _t = tt.substring(0,2) + String.valueOf(i) + tt.substring(3);134 int t = Integer.valueOf(_t);135 if(check(t) == 1 && vis[t] == 0){m.offer(t);vis[t] = vis[tmp] + 1;}136 if(t == ed){flag = 1;break;}137 }138 }139 for(int i = 0;i <= 9;i ++){140 if(i != uni){141 String _t = tt.substring(0,3) + String.valueOf(i);142 int t = Integer.valueOf(_t);143 if(check(t) == 1 && vis[t] == 0){m.offer(t);vis[t] = vis[tmp] + 1;}144 if(t == ed){flag = 1;break;}145 }146 }147 }148 149 if(m.size() == 0){System.out.println("Impossible");}150 else{System.out.println(vis[ed] - 1);}151 152 T --;153 }154 }155 }

 

转载于:https://www.cnblogs.com/love-fromAtoZ/p/7596867.html

你可能感兴趣的文章
[最小割][Kruskal] Luogu P5039 最小生成树
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
Dirichlet分布深入理解
查看>>
(转)Android之发送短信的两种方式
查看>>
python第九天课程:遇到了金角大王
查看>>
字符串处理
查看>>
ECharts(Enterprise Charts 商业产品图表库)初识
查看>>
LeetCode Factorial Trailing Zeroes (阶乘后缀零)
查看>>
hdu 5402 Travelling Salesman Problem (技巧,未写完)
查看>>
[AIR] 获取U盘,打开U盘
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
asp.net 获取IP地理位置的几个主要接口
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>