打气球

#include<iostream>
using namespace std;
#define SIZE 20
int data[SIZE];
int used[SIZE]={0};
int ballon[SIZE];
int N;
int weizhi[SIZE];
int Maxscore;

int  socore(int ballon[SIZE],int len,int j){
	int sum=0;
	int k,h;
	int flag1=0,flag2=0;
	int pos=j;
	for(k=pos+1;k<len;k++)
	{
		if(weizhi[k]==0)
		{
			flag1=1;
			break;
		}
	}
	for(h=pos-1;h>=0;h--)
	{
		if(weizhi[h]==0)
		{
			flag2=1;
			break;
		}
	}
	if(flag1==1&&flag2==1)
	{
		sum=sum+data[k]*data[h];
	}
	if(flag1==1&&flag2!=1)
	{
		sum=sum+data[k];
	}
	if(flag2==1&&flag1!=1)
	{
		sum=sum+data[h];
	}
	if(flag2!=1&&flag1!=1)
	{
		sum=sum+data[pos];
	}
	return sum;
}

void Allpailie(int step,int len,int scores)
{
	if(step==len)
	{
		if(scores>Maxscore){
			Maxscore=scores;
		}
		return;
	}
	for(int i=0;i<len;i++)
	{
		if(!used[i])
		{
			ballon[step]=i;
			used[i]=1;
			weizhi[i]=1;
			int tt=socore(ballon,len,i);
			Allpailie(step+1,len,scores+tt);
			weizhi[i]=0;
			used[i]=0;
		}
	}
}

void main(){
	freopen("a.txt","r",stdin);
	int nCase;
	cin>>nCase;
	for(int tc=0;tc<nCase;tc++)
	{
		cin>>N;
		for(int i=0;i<N;i++)
		{
			cin>>data[i];
		}
		//count=0;
		for(int i=0;i<SIZE;i++){
			used[i]=weizhi[i]=0;
		}
		Maxscore=0;
		Allpailie(0,N,0);
		cout<<Maxscore<<endl;

		//cout<<count;
		/*cout<<N<<endl;
		for(int j=0;j<N;j++)
		{
			cout<<data[j]<<" ";
		}
		cout<<endl;*/
	}
}
时间: 2024-08-10 23:28:30

打气球的相关文章

js实现点气球小游戏

二话不说直接贴代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>点气球</title> </head> <body> <!-- 实现功能: js生成div 在页面上向上移动 已不同的速度 点击气球 气球爆炸消失 1.js生成div标签 并初始化 1 一次生成10个 2

UVA - 12627 Erratic Expansion(奇怪的气球膨胀)(递归)

题意:问k小时后,第A~B行一共有多少个红气球. 分析:观察图可发现,k小时后,图中最下面cur行的红气球个数满足下式: (1)当cur <= POW[k - 1]时, dfs(k, cur) = dfs(k - 1, cur); (2)当cur > POW[k - 1]时, dfs(k - 1, cur) = 2 * dfs(k - 1, cur - POW[k - 1]) + tot[k - 1]; 其中,POW[k - 1]为2^(k  - 1),tot[k - 1]为k-1小时后图中的

bzoj4631踩气球

bzoj4631踩气球 题意: 有一个序列和一个区间集合,每次将序列中的一个数-1,求此时集合里有多少个区间和为0.序列大小≤100000,区间数≤100000,操作数≤100000. 题解: 此题解法其实并不难,对序列建线段树,用线段树每个节点维护区间和及覆盖该区间的集合内的区间的链表,同时记录每个集合内区间被分割为多少个区间.操作时就把查询经过的节点的区间和-1,如果为0则将覆盖该节点的区间的分割数-1,当分割数为0就让答案++.问题是复杂度,总是要遍历链表不会很慢吗?后来仔细想了一下,每次

杭州电子科技大学Online Judge 之 “漂浮的气球(ID1004)”解题报告

巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) 题目描述: Let the Balloon Rise Problem Description Contest time again! How excited it is tosee balloons floating around. But to tell you a secret, the judges' favoritetime is guessing the most popular pro

UVa 12627 奇怪的气球膨胀(分治)

https://vjudge.net/problem/UVA-12627 题意:一开始有一个红气球.每小时后,一个红气球会变成3个红气球和1个蓝气球,而1个蓝气球会变成4个蓝气球.如图所示分别是经过0,1,2,3,小时后得情况.经过k小时后,第A~B行一共有多少个红气球. 思路:由图分析,每次把图分为四个部分,右下角的部分全为蓝气球,不用去管他,剩下三部分都是一样的并且和前一小时的图形是一样的,这样的话我们可以计算出每个时刻红气球的总数. 既然每次可以分为四部分,那么很明显的就是用分治法来解决.

【BZOJ-4631】踩气球 线段树 + STL

4631: 踩气球 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 224  Solved: 114[Submit][Status][Discuss] Description 六一儿童节到了, SHUXK 被迫陪着M个熊孩子玩一个无聊的游戏:有N个盒子从左到右排成一排,第i个盒子里装着Ai个气球. SHUXK 要进行Q次操作,每次从某一个盒子里拿出一个没被踩爆的气球,然后熊孩子们就会立刻把它踩爆. 这M个熊孩子每个人都指定了一个盒子区间[Li, R

8635&#160;气球

时间限制:500MS  内存限制:1000K 提交次数:204 通过次数:58 题型: 编程题   语言: C++;C Description 一天,OYY 从外面打完比赛回来,手上拿了很多个气球,颜色各不相同.他见到我,就说,你看,我拿了很多气球!我膜拜死了!!然后他就问了我一个问题,如果把这里的气球分成若干份.有多少种分法呢?    由于我数学非常菜,顿时头晕了,因此希望大家能帮我解答这个问题(@[email protected])) 输入格式 输入数据有2行第1 行有两个数n,m,分别代表

扩展ToolBarManager、ListView和Grid控件以实现气球式的ToolTip

原文:扩展ToolBarManager.ListView和Grid控件以实现气球式的ToolTip infragistics是全球领先的UI工具和用户体验的专家,Infragistics开发了一系列的炫目的Windows.Web.WPF和Silverlight控件,相信很多人在使用它们.我们现在的项目就在使用Infragistics的Windows Form控件集.虽然这些控件功能强大,也不可能满足你所有的需求,尤其是那些比较苛刻的最终用户的需求.比如,我们最近就接收到这样一个变态的需求:让所以

BZOJ 4631: 踩气球

4631: 踩气球 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 275  Solved: 140[Submit][Status][Discuss] Description 六一儿童节到了, SHUXK 被迫陪着M个熊孩子玩一个无聊的游戏:有N个盒子从左到右排成一排,第i个盒子里装着Ai个气球. SHUXK 要进行Q次操作,每次从某一个盒子里拿出一个没被踩爆的气球,然后熊孩子们就会立刻把它踩爆. 这M个熊孩子每个人都指定了一个盒子区间[Li, R

1055 气球

1055 气球 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 在刚刚过去的六一节里(虽然我们已经不是儿童了,也可以庆祝一下啊,哈哈),游乐园的天空中飘满了气球,明明对这些气球突然有了兴趣,他需要你的帮助! 你将会被告知气球的数量以及每个气球的颜色 相同颜色的气球数量被称为这种颜色的频率. 输入描述 Input Description 输入(balloon.in):第一行为N(N<=100),接下来的N行