首页 > 其他 > 详细

saer

时间:2014-10-27 12:30:18      阅读:128      评论:0      收藏:0      [点我收藏+]

// erg.cpp : 定义控制台应用程序的入口点。
//>

#include "stdafx.h"
#include"omp.h"
int n;
int q;
void dfs(int b[],int k)
{
    int i,j;
    if(k>n)
    {
        #pragma omp atomic
        q++;
//  find=true;
        return ;
    }
    for(i=1;i<=n;i++)
        {

           for(j=1;j<k;j++)
           {
               if(i==b[j])//不同列  b[j] 表示第j行用了第b[j] 列
                   break;
      int x1=k-j,x2=i-b[j];
      if(x1<0) x1=x1*-1;
      if(x2<0) x2=x2*-1;
               if(x1==x2) //不能斜着相对
                   break;
           }
           if(j<k)
               continue;
            b[k]=i;
            dfs(b,k+1);
       
        }
}

int _tmain(int argc, _TCHAR* argv[])
{
 int i;
 while(scanf("%d",&n))
 {
 q=0;
 omp_set_num_threads(2);
    #pragma omp parallel for
 for(i=1;i<=n;i++)
 {
  
  int y[20];
  y[1]=i;
  dfs(y,2);
 }
 printf("%d\n",q);
 }
 return 0;
}

 

saer

原文:http://www.cnblogs.com/zhangdashuai/p/4053781.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!