No.3ベストアンサー
- 回答日時:
/* 1~nまでのの順列の並びを表示する */
#include <stdio.h>
#define N 10
#define USED 0
void Permutation(int level);
void display(void);
int selectList[N];
int AnswerList[N];
void main(void){
int i,Level=0;
for(i=0;i<N;i++){
AnswerList[i]=0; /* 多分必要ない */
selectList[i]=i+1; /* selectList[]={1,2,3,4,5,6,7,8…,N }; */
}
Permutation(Level);
}
void Permutation(int level){
int i,pos;
if(level == N){
display();
return ;
}
for(i=0;i<N;i++){
if(USED==(pos=selectList[i]))continue;
AnswerList[level]=pos;
selectList[i]=USED; /* 選択した数を使用済みにする */
Permutation(level + 1);
selectList[i]=pos; /* 次のループの為に戻す */
}
}
void display(void){
int i;
printf("[ ");
for(i=0;i<N;i++)
printf("%d ",AnswerList[i]);
printf("]\n");
}
実際に実行してみるには、Nをもっと小さくした方がいいかもです
数値でなくて、記号(1文字)でやる場合には、
参考URLを見て下さい。
http://okweb.jp/kotaeru.php3?qid=1038917
参考URL:http://okweb.jp/kotaeru.php3?qid=1038917
No.2
- 回答日時:
やり方はいろいろあります。
まず、どんな方法でやったら順列生成できるか考えてください。やり方の一例です。(解説はしません)
#include <stdio.h>
#define N 5
int p[N];
/* 数値を入れ替える */
void swap(int *a, int *b) {
int t;
t= *a; *a= *b; *b=t;
}
/* 数字を表示する */
void printN(void) {
int i;
for (i=0; i<N; i++) {
printf("%d ",p[i]);
}
printf("\n");
}
/* 入れ替えながら再帰 */
void perm(int n) {
int i;
if (n==0) {
printN();
} else {
perm(n-1);
for (i=n-1; i>=0; i--) {
swap(&p[n],&p[i]); perm(n-1); swap(&p[n],&p[i]);
}
}
}
int main(void) {
int i;
for (i=0; i<N; i++) p[i]=i+1; /* pに1からNまでの数字をセット */
perm(N-1);
return 0;
}
No.1
- 回答日時:
こちらが、参考になるかと・・・
http://www.altum.jp/math/exp1/task/perm.c
http://www.sra.co.jp/people/miyata/algorithm/gen …
参考URL:http://www.altum.jp/math/exp1/task/perm.c,http://www.sra.co.jp/people/miyata/algorithm/gen …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- その他(プログラミング・Web制作) プログラミングの問題です。プログラミングの空白に入るのは写真の通りであってますか?間違ってたらどこを 2 2022/06/18 22:31
- Ruby プログラミング 3 2023/06/09 14:30
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 malloc 関数を使って教えてください。 入出力例1 3 2022/07/21 09:36
- C言語・C++・C# プログラミングの問題です。写真のプログラムの1から10を下のように入力しましたがプログラムが上手くい 3 2022/07/01 23:31
- C言語・C++・C# 整数1〜99を入力させ、それを英語で表示するプログラムを作成したいんですが、そのプログラミングを教え 4 2023/04/28 14:12
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- C言語・C++・C# プログラミング実行後の表示される値を答えよ #include<stdio.h> void main( 7 2022/05/20 00:07
- その他(プログラミング・Web制作) プログラミングって本来数学的な計算をする為のものではないのですか? 学校で配られたFortran90 11 2022/08/25 22:14
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルピンスキーのギャスケット
-
C言語 エラーの原因がわからな...
-
【C++】関数ポインタの使い方
-
acceptをalarmでタイムアウトさ...
-
因数分解を行うプログラムについて
-
(マルチスレッド)_beginthrea...
-
std::set<int> で、ある値が何...
-
C言語での引数の省略方法
-
異なる文字列のマッチングを、D...
-
構造体のメンバ変数が途中で変...
-
ファイルから読みこむ方法
-
毎回違う乱数を生成するにはど...
-
「指定されたキャストは有効で...
-
ヒープ木の格納 【プログラミ...
-
C言語 巡回セールスマン問題 2-...
-
プログラミング
-
ColorをRGBで指定する方法
-
フィボナッチ数列のプログラム
-
商と剰余を同時に求める(C言語)
-
C言語でif文が予想と違う動きを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
C言語 エラーの原因がわからな...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
【C++】関数ポインタの使い方
-
if と配列の組み合わせ
-
(int *)の意味
-
実数の整数部,小数部の取得
-
acceptをalarmでタイムアウトさ...
-
C言語
-
std::set<int> で、ある値が何...
-
因数分解を行うプログラムについて
-
数字列を3桁ごとにカンマで区切...
-
(マルチスレッド)_beginthrea...
-
比較回数と交換回数表示について
-
式は定数値が必要です」という...
-
int型の変数値をバイト列として...
-
c言語の配列を使ってサイコロを...
おすすめ情報