Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

论坛上的数据都能过,但还是WA,帮忙看看啊

Posted by perry at 2008-02-01 15:47:59 on Problem 1011
非常非常感谢,实在是很崩溃了
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <algorithm>

int piece_num;
int pieces[65];
int used[65];

int stick_num;
int stick_len;

bool search_stick(int cur_id, int start, int cur_len)
{
	int temp;

	while (start < piece_num && (used[start] || cur_len + pieces[start] > stick_len))
		++start;
	if (start == piece_num)
		return false;

	if (cur_len + pieces[start] < stick_len)
	{
		used[start] = 1;
		if (search_stick(cur_id, start + 1, cur_len + pieces[start]))
			return true;
		used[start] = 0;
		if (cur_len > 0)
		{
			temp = start + 1;
			while (temp < piece_num && (used[temp] || pieces[temp] == pieces[start]))
				++temp;
			return search_stick(cur_id, temp, cur_len);
		}
	}
	else if (cur_len + pieces[start] == stick_len)
	{
		if (cur_id == stick_num - 1)
			return true;
		used[start] = 1;
		if (search_stick(cur_id + 1, 0, 0))
			return true;
		used[start] = 0;
		temp = start + 1;
		while (temp < piece_num && (used[temp] || pieces[temp] == pieces[start]))
			++temp;
		return search_stick(cur_id, temp, cur_len);
	}

	return false;
}

int main(void)
{
	int		it;
	int		total;
	int		min;

	freopen("input.txt", "r", stdin);

	while (scanf("%d", &piece_num))
	{
		if (piece_num == 0)
			break;

		total = 0;
		min = 0;
		for (it = 0; it < piece_num; ++it)
		{
			scanf("%d", &pieces[it]);
			total += pieces[it];
			if (pieces[it] > min)
				min = pieces[it];
		}
		std::sort(pieces, pieces + piece_num, std::greater<int>() );

		for (it = min; it <= total; ++it)
		{
			if (total % it != 0)
				continue;
			stick_num = total / it;
			stick_len = it;
			memset(used, 0, sizeof(used));
			if (search_stick(0, 0, 0))
				break;
		}
		printf("%d\n", it);
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator