回溯2--素数环
一、心得
二、题目及分析
素数环是一个计算机程序问题,指的是将从1到n这n个围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环。
计算1-20这20个数形成的素数环.
三、代码
1 /* 2 /* 3 框架一 4 5 int search(int k){ 6 for(int i=1;i<=算法总数;i++){ 7 if(满足条件){ 8 保存结果 9 if(到目的地) 输出解;10 else search(k+1);11 恢复:保存结果之前的状态(回溯一步) 12 }13 }14 } 15 16 3 都是在for下的if下的 17 4 保存结果,找下一步,回溯,这三个是一起的18 5 还有一个到达目的地输出解放在外面就好 19 20 21 search后面的k是轮数 22 23 三个数组:24 原数据数组25 标记数组26 储存结果数组27 28 29 30 框架二 到目的地的情况要多加1,因为满足了的下一轮就好判断 31 32 */33 #include34 #include 35 using namespace std;36 37 38 39 /*40 三个数组:41 原数据数组42 标记数组43 储存结果数组 44 45 */ 46 bool b[21]={ 0};//标记数组 47 int total=0;48 int ans[21]={ 0};//储存结果数组 49 50 //判断是否为素数,并且加上1 51 bool pd(int x,int y){52 int k=2,i=x+y;53 while(k<=sqrt(i)&&i%k!=0) k++;54 if(k>sqrt(i)) return true;55 else return false;56 }57 58 //输出结果59 void print(){60 if(total==5) return ;61 total++;62 cout<<"<"< <<">"<