永发信息网

求大牛将此Java程序改成C++,感激不尽。

答案:4  悬赏:0  手机版
解决时间 2021-12-28 22:28
publicclass AlgPro4_nQueen {
privateintqueensNum = 8;
privateint[] column;
privateint[] rightUp;
privateint[] leftUp;
privateint[] queen;
privateintnum;
public AlgPro4_nQueen() {
column = newint[queensNum+1];
rightUp = newint[(queensNum<<1)+1];
leftUp = newint[(queensNum<<1)+1];
for(int i = 1; i <= queensNum; i++)
column[i] = 1;
for(int i = 1; i <= queensNum<<1; i++)
rightUp[i] = leftUp[i] = 1;

queen = newint[queensNum+1];
}
publicvoid backTrack(int i) {
if (i > queensNum) {
showAnswer();
} else {
for (int j = 1; j <= queensNum; j++) {
if (column[j] == 1&& rightUp[i + j] == 1 && leftUp[i - j + queensNum] == 1) {
queen[i] = j;
column[j] = rightUp[i + j] = leftUp[i - j + queensNum] = 0;
backTrack(i+ 1);
column[j] = rightUp[i + j] = leftUp[i - j + queensNum] = 1;
}
}
}
}
publicvoid showAnswer() {
num++;
System.out.println("\nSolution " + num + ":");
for (int y = 1; y <= queensNum; y++) {
for (int x = 1; x <= queensNum; x++) {
if (queen[y] == x) {
System.out.print(" ♀");
}else {
System.out.print(" .");
}
}
System.out.println();
}
}
publicstaticvoid main(String[] args) {
AlgPro4_nQueen nQueen = new AlgPro4_nQueen();
nQueen.backTrack(1);
}
}
最佳答案
include <stdio.h>
public class AlgPro4_nQueen {
   private:
    int queensNum = 8;
  int *column;
   int *rightUp;
    int *leftUp;
    int *queen;
    int num;   
    public:
     AlgPro4_nQueen() {    
       column = (int *)malloc(sizeof(int)*(queensNum+1));
       rightUp = (int *)malloc(sizeof(int)*((queensNum<<1)+1));
       leftUp = (int *)malloc(sizeof(int)*((queensNum<<1)+1));      
       for(int i = 1; i <= queensNum; i++)
           column[i] = 1;
       for(int i = 1; i <= queensNum<<1; i++)
           rightUp[i] = leftUp[i] = 1;

       queen = (int *)malloc(sizeof(int)*(queensNum+1));
    }   
   void backTrack(int i) {
      if (i > queensNum) {
         showAnswer();
      } else {
         for (int j = 1; j <= queensNum; j++) {
            if (column[j] == 1&& rightUp[i + j] == 1 && leftUp[i - j + queensNum] == 1) {
                queen[i] = j;
                column[j] = rightUp[i + j] = leftUp[i - j + queensNum] = 0;
                backTrack(i+ 1);
                column[j] = rightUp[i + j] = leftUp[i - j + queensNum] = 1;
            }
         }
      }
   }   
    void showAnswer() {
      num++;
      printf("\nSolution " + num + ":");
      for (int y = 1; y <= queensNum; y++) {
         for (int x = 1; x <= queensNum; x++) {
            if (queen[y] == x) {
                printf(" ♀");
            }else {
                printf(" .");
            }
         }
         printf("\n");
      }
   }  
}
void main() {
       AlgPro4_nQueen nQueen = new AlgPro4_nQueen();
       nQueen.backTrack(1);}
全部回答
//我已经帮你改了,但是我运行了一下,发现结果有问题。 // 2333.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<iostream> #include<math.h> class AlgPro4_nQueen { private: int queensNum  ; int column[8+1]; int rightUp[8<<1 +1]; int leftUp[8<<1 +1]; int queen[8+1]; int num; public: AlgPro4_nQueen(void); public: void backTrack(int i); void showAnswer(); }; AlgPro4_nQueen::AlgPro4_nQueen() {   for (int i=1;i<= 8;i++)column[i] = 1; for (int i=1;i<= 8<<1;i++){ rightUp[i] = 1; leftUp[i] = 1; } } void AlgPro4_nQueen::showAnswer() { num++; printf("\nSolution %d:",num); for (int y = 1;y<=queensNum;y++){ for (int x= 1;x<=queensNum;x++){ if (queen[y] ==x) printf("♀"); else printf(" ."); } printf("\n"); } } void AlgPro4_nQueen::backTrack(int i){ if (i>queensNum){ showAnswer(); }else{ for (int j = 1;j<=queensNum;j++){ if ((column[j] ==1) && (rightUp[i+j] ==1) && (leftUp[i-j+queensNum]==1)){ queen[i] =j; column[j] = 0; rightUp[i+j] = 0; leftUp[i-j+queensNum]=0; backTrack(i+1); column[j]=1; rightUp[i+j] =1; leftUp[i-j+queensNum]=1; } } } } int main() { AlgPro4_nQueen aq ; aq.backTrack(1); getchar(); }
//我已经帮你改了,但是我运行了一下,发现结果有问题
查求不多,只是声明变量的时候 private : intqueensNum = 8; 这种形式 System.out.println()改写成 cout<<intqueensNum <<endl; 这样的形式
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
乐观阅读答案
单选题在工业发展中我国吸取发达国家的经验教
大冰的故事里,有一个女孩,和大冰书信往来始
真的用韩文怎么写
吉安市中心医院在哪?
喝酒前吃什么不容易醉 5类食物快速解酒让
华为麦芒4通话声音很小怎么调大
爲什麽台灣的捷運站和很多公車站的地名是用拼
单选题根据生态学原理,要使能量流经食物链的
如图所示,木板B放在粗糙水平面上,木块A放在
图个轻松怎么上传图片
.He said that he to Canada a few years ago
微信里面的收藏怎么发到QQ里面
仪表盘的远光灯图标不亮了
众悦学车网(宏大驾校)地址好找么,我有些事要
推荐资讯
有关湖南师范大学转系的问题 超急的!!!
凤凰到芷江有多少公里
护照可以用多长时间
海晏县水务局位置在什么地方啊,我要过去办理
多项式x2+kx+25是另一个多项式的平方,则k的
靖江离扬州有多远
莆田系有哪些,医院属于他们
用梯形法编程求函数f(x)=x2+2x+1的定积分
彷徨的反义词是什么
用古文怎么说“有需要时再跟您联系”?
怎样隐藏微信好友名单
下面横线上所填的词语,最恰当的一组是(1)请
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?