⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zp1909_p_wf.cpp

📁 一个acm题目系统会自动删除debug和release目录
💻 CPP
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX 20int n;int Stick[MAX], locate[MAX];int left[4];int ave, maxstick;void Input(){	scanf("%d", &n);	ave = 0;	maxstick = 0;	int i;	for (i = 0; i < n; ++i)	{		scanf("%d", &Stick[i]);		ave += Stick[i];		if ( maxstick < Stick[i] ) 			maxstick = Stick[i];	}}int compare(const void * p1, const void * p2 ){	if ((*(int *)p1) < (*(int *)p2))		return 1;	else		return -1;}bool CanFormSquare(int st){	if (st >= n) return true;	int i;	for (i = locate[st] + 1; i < 4; ++i)	{		if ( Stick[st] <= left[i] )		{			left[i] -= Stick[st];			locate[st] = i;			if ( CanFormSquare(st+1) )  return true;			left[i] += Stick[st];			if (left[i] == ave) break;		}	}	locate[st] = -1;	return false;}int main(int argc, char *argv[]){	int Test;	scanf("%d", &Test);	while(Test --)    {		Input();		qsort(Stick, n, sizeof(int), compare);		memset(locate, -1, sizeof(locate));		if (ave % 4 > 0 || maxstick > ave / 4)		{			printf("no\n");			continue;		}		ave /= 4;		left[0] = ave - Stick[0];		locate[0] = 0;		left[1] = left[2] = left[3] = ave;		if (CanFormSquare(1))			printf("yes\n");		else 			printf("no\n");	}	return 0;}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -