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;
    }

      

  • 相关阅读:
    error: with modifiers "public "
    移除元素
    删除有序数组中的重复项
    最长公共前缀
    如何杀死window进程
    IDEA卡顿问题
    合并两个有序链表
    开闭原则
    字符集和sql语句GROUPBY查询的版本问题
    里氏替换原则
  • 原文地址:https://www.cnblogs.com/staginner/p/2143675.html
Copyright © 2011-2022 走看看