【codevs1031 质数环】回溯法
来源:互联网 发布:虚拟机与主机网络连接 编辑:程序博客网 时间:2024/05/10 06:48
#include <cstdio>#include <cmath>#include <cstring>int A[50], n;bool vis[50], isp[50];bool is_prime(int i){ if (i == 2) { return true; } for (int j = 2; j <= (int)sqrt(i); j++) { //printf("%d ", j); if ((i % j) == 0) { return false; } } //printf("\n"); return true;}void dfs(int cur){ A[0] = 1; if (cur == n && isp[A[0] + A[n - 1]]) { for (int i = 0; i < n; i++) printf("%d ", A[i]); printf("\n"); } else for (int i = 2; i <= n; i++) { if (!vis[i] && isp[i + A[cur - 1]]) { A[cur] = i; vis[i] = true; dfs(cur + 1); vis[i] = false; } }}int main(){ scanf("%d", &n); memset(isp, false, sizeof(isp)); for (int i = 2; i <= 2 * n; i++) { //printf("-%lf\n", sqrt(i)); isp[i] = is_prime(i); // if (isp[i] == true) // { // printf("%d\n", i); // } } memset(vis, false, sizeof(vis)); dfs(1); return 0;}
WA了一上午!!!!!
一开始是判断is_prime的时候i % j == 0
写成了i / j == 0
= =蜜汁死蠢错误。
后来。。。。主函数里是dfs(1)
,是从第二个数开始搜(数组从0开始存的),因为题目上说规定数环上的第一个数字总是1!!!!!!!!你怎么又不看题!!!!!!!!!!
所以加上A[0] = 1
就。。过。。了。。。。。。qnq
0 0
- 【codevs1031 质数环】回溯法
- codevs1031
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 质数填表问题的回溯算法
- 回溯法素数环
- 回溯法-素数环
- 【JZOJ4890】【NOIP2016提高A组集训第14场11.12】随机游走
- LeetCode 459. Repeated Substring Pattern
- 关于Java面试中sql优化的问题浅析
- android与js相互调用(2)基本用法
- ppt实现水滴效果
- 【codevs1031 质数环】回溯法
- Struts2 与Servlet API解耦,耦合的访问方式
- ppt实现水滴效果
- 装饰者设计模式
- 计算机系统分类
- Retrofit初探——POST方式提交JSON数据
- Mysql的优化和架构浅析
- 279. Perfect Squares
- Rdd成员变量Dependency介绍(类型及其如何被初始化)