コアダンプが起こりまして -o -g しても何も起こりませんでした。(NQueenを解く問題です。)
現在はp「-1」になるところを修正しています。
自分では何時間も考慮したのですか、いかにしてp「-1」を解決するのかが見つからないく、もし何か良い方法があればぜひおねがいして教えてほしいです。
#include<stdlib.h> #define N 4 int p[N], r=0; int check(int x,int y) { int i, j; for(i=0; i<N; i++) { for(j=0; j<i; j++) { if(p[i]==p[j]) return 1; } } return 0; } void qp(int n) { int i, l, m, k; for(i=0; i<N; i++) { printf("ok1"); p[n]=i; if(abs(p[n]- p[n-1]) !=1 && p[n]-p[n-1]==0) { printf("ok2"); if(N-1 == n)//queen place check. { printf("ok3 "); if(check(p[m], p[l]) == 0) { for(k=0; k<N; k++)printf("%d ", p[k]); printf("\n"); } } } else { qp(n+1); } } } int main(void) { int i; for(i=0; i<N; i++)p[i]=0; for(i=0; i<N; i++) { printf("ok0"); p[0]=i; qp(1); } } コード
これを用いて編集をして
#include<stdio.h> #include<stdlib.h> #define N 8 int p[N]; int check(int x,int y) { int i, j; for(i=0; i<N; i++) { for(j=i+1; j<i; j++) { if(p[i]==p[j]) return 1; } } return 0; } void qp(int n) { int i, l, m, k; for(i=0; i<N; i++) { printf("ok1"); p[n]=i; if(abs(p[n]- p[n-1]) !=1 && p[n]-p[n-1]==0) { printf("ok2"); if(N-1 == n)//queen place check. { printf("ok3 "); if(check(p[m], p[l]) == 0) { for(k=0; k<N; k++)printf("%d ", p[k]); printf("\n"); } } } else { qp(n+1); } } } int main(void) { int i; for(i=0; i<N; i++)p[i]=0; for(i=0; i<N; i++) { printf("ok0"); p[0]=i; qp(1); } } コード
結果:$ ./a
ok0ok1ok2ok1ok1ok1ok2ok1ok1ok1ok2ok1ok1ok1ok2ok3 0 1 0 1 0 1 0 0
Segmentation fault (コアダンプ)
の進展ができました。現在コアダンプのところを解読しています。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/14 10:37