zoukankan      html  css  js  c++  java
  • POJ 2362 Square

    POJ_2362

        在有了POJ_1011的基础之后,这个题目还是能够比较轻松地独立完成的。

    #include<stdio.h>
    #include
    <string.h>
    #include
    <stdlib.h>
    int state[10010],st[10010],d,n,sum;
    int cmp(const void *_p,const void *_q)
    {
    int *p=(int *)_p;
    int *q=(int *)_q;
    return *q-*p;
    }
    int dfs(int rest,int complete,int start)
    {
    int i;
    if(rest==0)
    {
    complete
    ++;
    if(complete==4)
    return 1;
    for(i=0;st[i]!=0;i++);
    st[i]
    =1;
    if(dfs(d-state[i],complete,i+1))
    return 1;
    st[i]
    =0;
    }
    else
    {
    for(i=start;i<n;i++)
    {
    if(i>0&&state[i]==state[i-1]&&!st[i-1])
    continue;
    if(!st[i]&&rest>=state[i])
    {
    st[i]
    =1;
    if(dfs(rest-state[i],complete,i+1))
    return 1;
    st[i]
    =0;
    if(rest==state[i])
    break;
    }
    }
    }
    return 0;
    }
    int main()
    {
    int i,j,k,t;
    scanf(
    "%d",&t);
    while(t--)
    {
    sum
    =0;
    scanf(
    "%d",&n);
    for(i=0;i<n;i++)
    {
    scanf(
    "%d",&k);
    state[i]
    =k;
    sum
    +=k;
    }
    if(sum%4!=0)
    {
    printf(
    "no\n");
    continue;
    }
    qsort(state,n,
    sizeof(state[0]),cmp);
    memset(st,
    0,sizeof(st));
    d
    =sum/4;
    if(dfs(d,0,0))
    printf(
    "yes\n");
    else
    printf(
    "no\n");
    }
    return 0;
    }

      

  • 相关阅读:
    多线程中注意事项
    多线程实现第三种方式
    线程池《一》
    线程组
    线程间通信注意的问题
    互斥锁
    多个线程通信的问题
    二个线程间的通信
    死锁产生的原理
    线程安全问题
  • 原文地址:https://www.cnblogs.com/staginner/p/2143675.html
Copyright © 2011-2022 走看看