zoukankan      html  css  js  c++  java
  • UVa 524

      题目大意:输入正整数n,把整数1,2...,n组成一个环,使得相邻两个整数之和均为素数。输出时从整数1开始逆时针(题目中说的不是很明白??)排列。同一个环应恰好输出一次。

      枚举,并在枚举每一个数是进行判断,可以提高效率。

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 int A[20], vis[20];
     5 int n;
     6 
     7 int is_prime(int n)
     8 {
     9     for(int i = 2; i*i <= n; i++)
    10         if(n % i == 0)   return 0;
    11     return 1;
    12 }
    13 
    14 void dfs(int cur)
    15 {
    16     if(cur == n && is_prime(A[0]+A[n-1]))
    17     {
    18         for(int i = 0; i < n; i++)
    19         {
    20             printf("%d", A[i]);
    21             printf("%s", i == n-1 ? "
    " : " ");
    22         }
    23         return;
    24     }
    25     for(int i = 2; i <= n; i++)
    26         if(vis[i] == 0 && is_prime(i+A[cur-1]))
    27         {
    28             A[cur] = i;
    29             vis[i] = 1;
    30             dfs(cur+1);
    31             vis[i] = 0;
    32         }
    33 }
    34     
    35 int main()
    36 {
    37 #ifdef LOCAL
    38     freopen("in", "r", stdin);
    39 #endif
    40     int kase = 0;
    41     while(scanf("%d", &n) != EOF)
    42     {
    43         memset(vis, 0, sizeof(vis));
    44         A[0] = 1;
    45         vis[1] = 1;
    46         if (kase)   printf("
    ");
    47         printf("Case %d:
    ", ++kase);
    48         dfs(1);
    49     }
    50     return 0;
    51 }
    View Code

      以前写了一次,WA了两次,也看不出来怎么错的,今天在JOJ又看到了,就又看了看,还是不知道怎么错的,知道搜别人代码了,然后发现是在最后一个case后多输一个空行,去掉后试了一下,竟然AC了...好吧,格式错误不是该是PE吗?害我一直以为是答案错了呢

  • 相关阅读:
    线程安全的单例模式
    rsync 不真正同步,只显示更新的内容
    Python_元组、字典内建方法详解
    Python_元组、字典内建方法详解
    数组求差集
    svn数据库自动发布程序
    perl 比较目录
    被驱动表 拼接列无法走索引
    FILTER NESTLOOP 中驱动表问题
    Linux_SystemLogManager
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3187296.html
Copyright © 2011-2022 走看看