Ⅰ 如何用C编写一个解魔方的程序求高手来!
估计这种智能化的没有几个人可以编写出来。这可是一个非常大的工程。
不过我可以告诉你编写的步骤:
1.先拼好一个面的十字架,注意与临面的一致性,然后拼好一个面。
2.再拼好这个面的四个临面,用的方法是:五逆四顺或者五顺四逆。
3.再拼最后一个面的十字架,方法为:三逆三顺。
4.拼好最后一个面为同色,方法:左下右上。
5.最后是完全拼好,口诀为:逆,逆,顺,逆,逆;顺顺,顺,顺,顺;顺 顺,逆,顺,顺;顺顺,逆,逆。
Ⅱ 用c语言编写n阶魔方阵.谢谢了!!!
下面这个程序原本是从网络里找到的,不过发现网络里面那个程序原来有误,修改后终于可以了,给你,希望有帮助!!!
#include <stdio.h>
#define N 16 //N可修改
int main()
{
int a[N][N]={0},i,j,k,p,m,n;
p=1;
while(p==1)
{
printf("Enter n(1~%d): ",N-1);
scanf("%d",&n);
if((n!=0)&&(n<N)&&(n%2!=0))
p=0;
}
i=n+1;
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{
i=i-1;
j=j+1;
if((i<1)&&(j>n))
{
i=i+2;j=j-1;
}
else
{
if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}
Ⅲ 魔方阵c语言程序
下面运行通过,只不过不知道是否符合你的格式,代码如下: #include
Ⅳ 怎样用C语言编写魔方程序
说白了就是递归。你可以去看汉诺塔和华容道的递归方式。这两个我写过,其实魔方的差不多,就是在三维结构体组的衔接上需要沸点脑子。说错了是结构体的构造上需要琢磨下
Ⅳ 能不能用C语言编写一个魔方程序谢谢
这个很难,算法很复杂,
最关键的是,
1. 输入太多了,几乎需要将6个面的每一格的颜色都输入,否则魔方的状态不唯一
2. 编程的人需要有玩魔方的基础,唉,反正我不会玩魔方~~~
Ⅵ C语言做的魔方阵
我奇怪你的语法怎么可能没错,int str[n][n];肯定是编译不通的,数组定义时长度必须是常量。给你一个我自己写的魔方阵算法吧,算作参考
#include<stdio.h>
#define N 100
void sort(int *p,int num)
{
int i;
int row,col;
row=0;
i=0;
col=num/2;
while(i<num*num)
{
if(*(p+row*num+col)!=0)
{row+=2;col--;}
*(p+row*num+col)=i+1;
if((row==0)&&(col==num-1))
{
row++;
}
else
{
if(row==0)
row=num-1;
else
row--;
if(col==num-1)
col=0;
else
col++;
}
i++;
}
}
void main()
{
int i,flag,a[N]={0};
int *p,n;
flag=1;
p=a;
while(flag==1)
{
printf("enter n(1~10)\n");
scanf("%d",&n);
if((n>0)&&(n<11)&&(n%2!=0)) flag=0;
}
sort(p,n);
for(i=0;i<n*n;i++)
{
printf("%5d",a[i]);
if((i+1)%n==0) printf("\n");
}
}
Ⅶ C语言编程,输出魔方阵
程序代码:
#include<stdio.h>
#define N 16
int main()
{
int a[N][N]={0},i,j,k,p,n;
p=1;
while(p==1)
{
printf("Enter n(1~%d):",N);
scanf("%d",&n);
if((n!=0)&&(n<N)&&(n%2!=0))
p=0;
}
i=n+1;
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{
i=i-1;
j=j+1;
if((i<1)&&(j>n))
{
i=i+2;
j=j-1;
}
else
{
if(i<1)i=n;
if(j>n)j=1;
}
if(a<i>[j]==0)a<i>[j]=k;
else
{
i=i+2;
j=j-1;
a<i>[j]=k;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%4d",a<i>[j]);
printf(" ");
}
return 0;
}
(7)c语言编写魔方程序扩展阅读:
1.第一行中间一列的值为1。
所以用j=n/2+1确定1的列数,得出a[1][j]=1。
2.每一个数存放的行比前一个数的行数减1,列数加1。
行数用i=i-1确定,列数用j=j+1确定。
3.如果一个数行数为第一行,则下一个数行数为最后一行。
4.如果一个列行数为最后一列,则下一个数列数为第一列。
5.如果按上面的规则确定的位置上已有数,或上一个数是第一行最后一列,则把下一个数放在上一个数的下面。
Ⅷ 用c语言程序编写的1到n的平方的魔方阵运行的结果是什么
#include"stdio.h"
main()
{
inta[20][20],i,j,k,p=1,m,n;
while(p==1)
{
printf("Entern(n=1--19):");
scanf("%d",&n);
if(n>0&&n<=19&&n%2!=0)p=0;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{
i-=1;
j+=1;
if(i<1&&j>n)
{
i+=2;
j-=1;
}
else
{
if(i<1)i=n;
if(j>n)j=1;
}
if(a[i][j]==0)a[i][j]=k;
else
{
i+=2;
j-=1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)printf("%4d",a[i][j]);
printf(" ");
}
}
我举个例子:3介魔方阵
8 1 6
3 5 7
4 9 2
就是每一行,每一列和对角线这和都相等
Ⅸ 求解!!!如何在C语言中编写一个魔方矩阵
#include <stdio.h>
int main()
{ int a[15][15],i,j,k,p,n;
p=1;
while(p==1)
{printf("enter n(n=1--15):");
scanf("%d",&n);
if ((n!=0) && (n<=15) && (n%2!=0))
p=0;
}
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a[i][j]=0;
j=n/2+1;
a[1][j]=1;
for (k=2;k<=n*n;k++)
{i=i-1;
j=j+1;
if ((i<1) && (j>n))
{i=i+2;
j=j-1;
}
else
{if (i<1) i=n;
if (j>n) j=1;
}
if (a[i][j]==0)
a[i][j]=k;
else
{i=i+2;
j=j-1;
a[i][j]=k;
}
}
for (i=1;i<=n;i++)
{for (j=1;j<=n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
return 0;
}
Ⅹ 请编程达人用c语言编写一个程序输出魔方阵
#include <stdio.h>
#define N 16 //这里可以修改N的值
int main()
{
int a[N][N],i,j,k,p,m,n;
p=1;
while(p==1) /*要求阶数为1~15的商数*/
{ printf("Enter n(n=1~15):"); //可以输入小于等于N-1的整数
scanf("%d",&n);
if((n!=0)&&(n<=N-1)&&(n%2!=0)) p=0;
}
for(i=1;i<=n;i++) /*初始化*/
for(j=1;j<=n;j++) a[i][j]=0;
j=n/2+1; /*建立魔方阵*/
a[1][j]=1;
for(k=2;k<=n*n;k++)
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++) /*输出魔方阵*/
{ for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}