/*
nクイーン問題を考える。プログラムの引数により整数nと位置番号aを与える。
aを関数id2placeによりマス目位置(i,j)に直し、そのマス目にクイーンをおいた場合に、
クイーンがおけなくなる一番号を求めるnoqueenを作成せよ。
noqueenの第1引数にはn、第2,3引数にiとj、第4引数には大きさn+1以上の整数型の配列nqを与える
(ここではn<=15とし、nq[20]としておく)。配列nqの第i要素には、クイーンがおける場合は0、
おけない場合は1を設定する。つまりnoqueenの出力を配列nqに埋め込む形になる。
実行結果の例
> program 6 23
2 5 9 11 16 17 18 19 20 21 22 23 24 28 29 30 33 35
*/
#include<stdio.h>
#include<stdlib.h>
int place2id(int, int, int);
void id2place(int,int,int *,int *);
void noqueen(int,int,int,int []);
main(int argc, char **argv){
int n = atoi(argv[1]);
int a = atoi(argv[2]);
int nq[400];
int i,j,k;
for(k=0; k<400; k++) nq[k]=0;
id2place(n,a,&i,&j);
noqueen(n,i,j,nq);
for(k=0;k<=400;k++) if (nq[k]==1) printf(" %d",k);
printf("\n");
}
void noqueen(int n,int oi, int oj, int nq[]){
/*ここを埋めてもらいたい*/
}
int place2id(int n, int i, int j){
return n*i-(n-j);
}
void id2place(int n, int a, int *i, int *j){
int k=a%n;
if(k!=0){
*i=a/n+1;
*j=a%n;
}
else{
*i=a/n;
*j=n;
}
}
LyoKCm7jgq/jgqTjg7zjg7PllY/poYzjgpLogIPjgYjjgovjgILjg5fjg63jgrDjg6njg6Djga7lvJXmlbDjgavjgojjgormlbTmlbBu44Go5L2N572u55Wq5Y+3YeOCkuS4juOBiOOCi+OAggph44KS6Zai5pWwaWQycGxhY2Xjgavjgojjgorjg57jgrnnm67kvY3nva4oaSxqKeOBq+ebtOOBl+OAgeOBneOBruODnuOCueebruOBq+OCr+OCpOODvOODs+OCkuOBiuOBhOOBn+WgtOWQiOOBq+OAgQrjgq/jgqTjg7zjg7PjgYzjgYrjgZHjgarjgY/jgarjgovkuIDnlarlj7fjgpLmsYLjgoHjgotub3F1ZWVu44KS5L2c5oiQ44Gb44KI44CCCm5vcXVlZW7jga7nrKwx5byV5pWw44Gr44GvbuOAgeesrDIsM+W8leaVsOOBq2njgahq44CB56ysNOW8leaVsOOBq+OBr+Wkp+OBjeOBlW4rMeS7peS4iuOBruaVtOaVsOWei+OBrumFjeWIl25x44KS5LiO44GI44KLCijjgZPjgZPjgafjga9uPD0xNeOBqOOBl+OAgW5xWzIwXeOBqOOBl+OBpuOBiuOBjynjgILphY3liJduceOBruesrGnopoHntKDjgavjga/jgIHjgq/jgqTjg7zjg7PjgYzjgYrjgZHjgovloLTlkIjjga8w44CBCuOBiuOBkeOBquOBhOWgtOWQiOOBrzHjgpLoqK3lrprjgZnjgovjgILjgaTjgb7jgopub3F1ZWVu44Gu5Ye65Yqb44KS6YWN5YiXbnHjgavln4vjgoHovrzjgoDlvaLjgavjgarjgovjgIIKCuWun+ihjOe1kOaenOOBruS+iwoKPiBwcm9ncmFtIDYgMjMKMiA1IDkgMTEgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMgMjQgMjggMjkgMzAgMzMgMzUKCiovCgojaW5jbHVkZTxzdGRpby5oPgojaW5jbHVkZTxzdGRsaWIuaD4KCmludCBwbGFjZTJpZChpbnQsIGludCwgaW50KTsKdm9pZCBpZDJwbGFjZShpbnQsaW50LGludCAqLGludCAqKTsKdm9pZCBub3F1ZWVuKGludCxpbnQsaW50LGludCBbXSk7CgptYWluKGludCBhcmdjLCBjaGFyICoqYXJndil7CgogIGludCBuID0gYXRvaShhcmd2WzFdKTsKICBpbnQgYSA9IGF0b2koYXJndlsyXSk7CiAgaW50IG5xWzQwMF07CiAgaW50IGksaixrOwoKICBmb3Ioaz0wOyBrPDQwMDsgaysrKSBucVtrXT0wOwogIGlkMnBsYWNlKG4sYSwmaSwmaik7CiAgbm9xdWVlbihuLGksaixucSk7CiAgZm9yKGs9MDtrPD00MDA7aysrKSBpZiAobnFba109PTEpIHByaW50ZigiICVkIixrKTsKICBwcmludGYoIlxuIik7Cn0KCnZvaWQgbm9xdWVlbihpbnQgbixpbnQgb2ksIGludCBvaiwgaW50IG5xW10pewoKLyrjgZPjgZPjgpLln4vjgoHjgabjgoLjgonjgYTjgZ/jgYQqLwoKfQoKaW50IHBsYWNlMmlkKGludCBuLCBpbnQgaSwgaW50IGopewoKICByZXR1cm4gbippLShuLWopOwp9Cgp2b2lkIGlkMnBsYWNlKGludCBuLCBpbnQgYSwgaW50ICppLCBpbnQgKmopewoKICBpbnQgaz1hJW47CgogIGlmKGshPTApewogICAgKmk9YS9uKzE7CiAgICAqaj1hJW47CiAgfQogIGVsc2V7CiAgICAqaT1hL247CiAgICAqaj1uOwogIH0KfQ==