POJ2965

题目:http://poj.org/problem?id=2965

Problem: 2965   User: qq1203456195
Memory: 172K   Time: 47MS
Language: C   Result: Accepted
#include <stdio.h>
int Arr[16]=
{
    0xf888,0xf444,0xf222,0xf111,
    0x8f88,0x4f44,0x2f22,0x1f11,
    0x88f8,0x44f4,0x22f2,0x11f1,
    0x888f,0x444f,0x222f,0x111f
};
int Sln[16],idx_Sln;
int M=0x0000;
int i;
void fun(int idx)
{
    if (idx>=16)
    {
        if (M==0x0000)
        {
            printf("%d\n",idx_Sln);
            for (i=0;i<idx_Sln;i++)
                printf("%d %d\n",Sln[i]/4+1,Sln[i]%4+1);
        }
        return;
    }
    //not do
    fun(idx+1);
    //do
    M^=Arr[idx];
    Sln[idx_Sln]=idx;
    idx_Sln++;
    fun(idx+1);
    M^=Arr[idx];
    idx_Sln--;
}
int main()
{
    char ch;
    i=20;
    while (i--)
    {
        scanf("%c",&ch);
        
        if (ch=='+')    {M=M<<1;M^=1;}//Locked
        if (ch=='-')    {M=M<<1;}//Open
    }
    fun(0);
    return 1;
}

 

posted @ 2012-04-12 18:48  ZH奶酪  阅读(626)  评论(0编辑  收藏  举报