qq_31459657 2017-09-01 15:39 采纳率: 0%
浏览 840

POJ1166 求问错在哪里?

原题地址
http://bailian.openjudge.cn/practice/2814/

我的答案:
#include
#include
using namespace std;

void op(int a[],int i,int num)
{
for(int j=0;j<num;j++)
{

switch(i)
{
    case 1:a[0]++;a[1]++;a['d'-'a']++;a['e'-'a']++;break;
    case 2:a[0]++;a[1]++;a[2]++;break;
    case 3:a['b'-'a']++;a['c'-'a']++;a['e'-'a']++;a['f'-'a']++;break;
    case 4:a[0]++;a['d'-'a']++;a['g'-'a']++;break;
    case 5:a['b'-'a']++;a['d'-'a']++;a['e'-'a']++;a['f'-'a']++;a['h'-'a']++;break;
    case 6:a['c'-'a']++;a['f'-'a']++;a['i'-'a']++;break;
    case 7:a['d'-'a']++;a['e'-'a']++;a['g'-'a']++;a['h'-'a']++;break;
    case 8:a['g'-'a']++;a['h'-'a']++;a['i'-'a']++;break;
    case 9:a['e'-'a']++;a['f'-'a']++;a['h'-'a']++;a['i'-'a']++;break;
    default:break;
}
for(int i=0;i<9;i++)
{
    a[i]%=4;
}
}

}

int main()
{
int now[9];
int temp[9];
int slove[9]={0};
int outnum[9];
int minnum = 10000;
int tempmin=0;

for(int i=0;i<9;i++)
{
   cin>>temp[i];
}

memcpy(now,temp,sizeof(now));

for(int i=0;i<4;i++)
{
    op(now,1,i);
    slove[0] = i;

    for(int j=0;j<4;j++)
    {
         op(now,2,j);
         slove[1] = j;

        for(int k=0;k<4;k++)
        {
            op(now,3,k);
            slove[2] = k;

            for(int i2 = 0;i2<2;i2++)
            {
                for(int j2=0;j2<3;j2++)
                {
                    if(now[3*i2+j2])
                    {
                        int opnum = 4 - now[3*i2+j2];
                        slove[3*i2+j2+3] = opnum;
                        op(now,3*i2+j2+1+3,opnum);
                    }
                    else
                    {
                        slove[3*i2+j2+3] = 0;
                    }

                }
            }

          if(now[6]== 0 && now[7] == 0 && now[8] == 0)
            {


                        tempmin=0;
                        for(int p=0;p<9;p++)
                        {
                            for(int o=0;o<slove[p];o++)
                            {
                                tempmin++;
                            }
                        }
                        if(tempmin < minnum)
                        {
                            minnum = tempmin;
                            memcpy(outnum,slove,sizeof(outnum));
                        }

            }
             memcpy(now,temp,sizeof(now));
        }

    }
}

int cur = 0;
for (cur = 0; cur < 9; cur++)
while (outnum[cur]--)
cout<<cur + 1<<" ";
return 0;
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-09-03 09:18
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题