九度教程第87题
C语言源码:[cpp]
#include<stdio.h>
#define maxsize 10000000
int queue[10000000][3];
int mark[110][110][110];
int main()
{
int s,n,m,i,j,k,front,rear,flag,num,f;
scanf("%d %d %d",&s,&n,&m);
while(s||n||m)
{
for(i=0;i<110;i++)
for(j=0;j<110;j++)
for(k=0;k<110;k++)
mark[i][j][k]=0;
front=0;
rear=1;
flag=1;
num=0;
f=-1;
queue[0][0]=s;
queue[0][1]=0;
queue[0][2]=0;
if(s%2==1)
printf("NO\n");
else
{
while(front!=rear)
{
i=queue[front][0];
j=queue[front][1];
k=queue[front][2];
front=(front+1)%maxsize;
if(mark[i][j][k]!=1)
{
mark[i][j][k]=1;
if((i==s/2&&j==s/2)||(i==s/2&&k==s/2)||(j==s/2&&k==s/2))
{
f=1;
break;
}
if((i<=n-j)&&mark[0][j+i][k]==0)
{
queue[rear][0]=0;
queue[rear][1]=j+i;
queue[rear][2]=k;
rear=(rear+1)%maxsize;
}
else if((i>n-j)&&(mark[i-(n-j)][n][k]==0))
{
queue[rear][0]=i-(n-j);
queue[rear][1]=n;
queue[rear][2]=k;
rear=(rear+1)%maxsize;
}
if((i<=m-k)&&mark[0][j][k+i]==0)
{
queue[rear][0]=0;
queue[rear][1]=j;
queue[rear][2]=k+i;
rear=(rear+1)%maxsize;
}
else if((i>m-k)&&(mark[i-(m-k)][j][m]==0))
{
queue[rear][0]=i-(m-k);
queue[rear][1]=j;
queue[rear][2]=m;
rear=(rear+1)%maxsize;
}
if((j<=s-i)&&mark[i+j][0][k]==0)
{
queue[rear][0]=i+j;
queue[rear][1]=0;
queue[rear][2]=k;
rear=(rear+1)%maxsize;
}
else if((j>s-i)&&(mark[s][j-(s-i)][k]==0))
{
queue[rear][0]=s;
queue[rear][1]=j-(s-i);
queue[rear][2]=k;
rear=(rear+1)%maxsize;
}
if((j<=m-k)&&mark[i][0][k+j]==0)
{
补充:软件开发 , C++ ,
- 更多C/C++疑问解答:
- 关于c++的cout输出的问题。
- 在学校里学过C和C++,不过学的很一般,现在自学C#,会不会很难?
- 全国计算机二级C语言笔试题
- 已知某树有2个2度结点,3个3度结点,4个4度结点,问有几个叶子结点?
- c++数据结构内部排序问题,整数排序
- 2012九月计算机二级C语言全国题库,,急求急求
- 如果assert只有一个字符串作为参数,是什么意思呢?
- C语言中,哪些运算符具有左结合性,哪些具有右结合性,帮忙总结下,谢谢了!
- 为什么用结构体编写的程序输入是,0输不出来啊~~~
- 将IEEE—754的十六进制转化为十进制浮点类型,用C或C++都行,多谢各位大侠啊,非常感谢!
- 为什么这个程序求不出公式?
- 这个链表倒置的算法请大家分析下
- c语言函数库调用
- C语言unsigned int纠错
- C语言快排求解啊