#31
by かずま » 6年前
のんのん#24 さんが書きました:6回データを表示したら、その内の5個を選び出して出力する方法はどうすればいいでしょうか?
6行のデータの 5個を開始位置を変えて 6回出力するんですよね。
コード:
#include <stdio.h>
int a[6][4] = {
11, 1, 0, 0,
1, 11, 0, 0,
0, 0, 11, 1,
0, 0, 1, 11,
11, 11, 0, 0,
0, 0, 11, 11,
};
unsigned long long count;
void pr(int n)
{
printf("%26.21s\n", "//////////12345678910//////////" + 11 - n);
}
void print(void)
{
printf("[%llu]\n", ++count);
for (int i = 0; i < 6; i++)
printf(" %2d %2d 11 %2d %2d\n", a[i][0], a[i][1], a[i][2], a[i][3]);
for (int i = 0; i < 6; i++) {
for (int k = i, j = 5; --j >= 0; ++k > 5 && (k = 0)) {
printf(" [%llu-%d]\n", count, k + 1);
pr(a[k][0]), pr(a[k][1]), pr(11), pr(a[k][2]), pr(a[k][3]);
}
printf(" Enter"), getchar();
}
}
int ok(int i, int j, int k)
{
for (int n = 0; n < 4; n++)
if (a[i][n] == k) return 0;
for (int n = 0; n < 6; n++)
if (a[n][j] == k) return 0;
return 1;
}
void step(int i, int j)
{
if (j == 4) {
j = 0;
if (++i == 6) { print(); printf("type ENTER"); getchar(); return; }
}
for (int k = 2; k <= 10; k++)
if (a[i][j])
step(i, j + 1);
else
if (ok(i, j, k)) a[i][j] = k, step(i, j + 1), a[i][j] = 0;
}
int main(void) { step(0, 0); }
実行結果
コード:
[1]
11 1 11 2 3
1 11 11 3 2
2 3 11 11 1
3 2 11 1 11
11 11 11 4 5
4 5 11 11 11
[1-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
[1-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
[1-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
[1-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
[1-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
Enter
[1-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
[1-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
[1-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
[1-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
[1-6]
///12345678910///////
////12345678910//////
//////////12345678910
//////////12345678910
//////////12345678910
Enter
[1-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
[1-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
[1-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
[1-6]
///12345678910///////
////12345678910//////
//////////12345678910
//////////12345678910
//////////12345678910
[1-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
Enter
[1-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
[1-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
[1-6]
///12345678910///////
////12345678910//////
//////////12345678910
//////////12345678910
//////////12345678910
[1-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
[1-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
Enter
[1-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
[1-6]
///12345678910///////
////12345678910//////
//////////12345678910
//////////12345678910
//////////12345678910
[1-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
[1-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
[1-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
Enter
[1-6]
///12345678910///////
////12345678910//////
//////////12345678910
//////////12345678910
//////////12345678910
[1-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
[1-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
[1-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
[1-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
Enter
type ENTER
[2]
11 1 11 2 3
1 11 11 3 2
2 3 11 11 1
3 2 11 1 11
11 11 11 4 5
4 5 11 11 11
[2-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
[2-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
[2-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
[2-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
[2-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
Enter
[quote="のんのん#24" id=3,19757,148848]6回データを表示したら、その内の5個を選び出して出力する方法はどうすればいいでしょうか?[/quote]
6行のデータの 5個を開始位置を変えて 6回出力するんですよね。
[code=c]
#include <stdio.h>
int a[6][4] = {
11, 1, 0, 0,
1, 11, 0, 0,
0, 0, 11, 1,
0, 0, 1, 11,
11, 11, 0, 0,
0, 0, 11, 11,
};
unsigned long long count;
void pr(int n)
{
printf("%26.21s\n", "//////////12345678910//////////" + 11 - n);
}
void print(void)
{
printf("[%llu]\n", ++count);
for (int i = 0; i < 6; i++)
printf(" %2d %2d 11 %2d %2d\n", a[i][0], a[i][1], a[i][2], a[i][3]);
for (int i = 0; i < 6; i++) {
for (int k = i, j = 5; --j >= 0; ++k > 5 && (k = 0)) {
printf(" [%llu-%d]\n", count, k + 1);
pr(a[k][0]), pr(a[k][1]), pr(11), pr(a[k][2]), pr(a[k][3]);
}
printf(" Enter"), getchar();
}
}
int ok(int i, int j, int k)
{
for (int n = 0; n < 4; n++)
if (a[i][n] == k) return 0;
for (int n = 0; n < 6; n++)
if (a[n][j] == k) return 0;
return 1;
}
void step(int i, int j)
{
if (j == 4) {
j = 0;
if (++i == 6) { print(); printf("type ENTER"); getchar(); return; }
}
for (int k = 2; k <= 10; k++)
if (a[i][j])
step(i, j + 1);
else
if (ok(i, j, k)) a[i][j] = k, step(i, j + 1), a[i][j] = 0;
}
int main(void) { step(0, 0); }
[/code]
実行結果
[code=text]
[1]
11 1 11 2 3
1 11 11 3 2
2 3 11 11 1
3 2 11 1 11
11 11 11 4 5
4 5 11 11 11
[1-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
[1-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
[1-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
[1-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
[1-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
Enter
[1-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
[1-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
[1-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
[1-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
[1-6]
///12345678910///////
////12345678910//////
//////////12345678910
//////////12345678910
//////////12345678910
Enter
[1-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
[1-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
[1-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
[1-6]
///12345678910///////
////12345678910//////
//////////12345678910
//////////12345678910
//////////12345678910
[1-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
Enter
[1-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
[1-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
[1-6]
///12345678910///////
////12345678910//////
//////////12345678910
//////////12345678910
//////////12345678910
[1-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
[1-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
Enter
[1-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
[1-6]
///12345678910///////
////12345678910//////
//////////12345678910
//////////12345678910
//////////12345678910
[1-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
[1-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
[1-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
Enter
[1-6]
///12345678910///////
////12345678910//////
//////////12345678910
//////////12345678910
//////////12345678910
[1-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
[1-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
[1-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
[1-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
Enter
type ENTER
[2]
11 1 11 2 3
1 11 11 3 2
2 3 11 11 1
3 2 11 1 11
11 11 11 4 5
4 5 11 11 11
[2-1]
//////////12345678910
12345678910//////////
//////////12345678910
/12345678910/////////
//12345678910////////
[2-2]
12345678910//////////
//////////12345678910
//////////12345678910
//12345678910////////
/12345678910/////////
[2-3]
/12345678910/////////
//12345678910////////
//////////12345678910
//////////12345678910
12345678910//////////
[2-4]
//12345678910////////
/12345678910/////////
//////////12345678910
12345678910//////////
//////////12345678910
[2-5]
//////////12345678910
//////////12345678910
//////////12345678910
///12345678910///////
////12345678910//////
Enter
[/code]