专栏文章

题解:P6458 [COCI2006-2007#5] LIGA

P6458题解参与者 2已保存评论 3

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
3 条
当前快照
1 份
快照标识符
@miqeu8gc
此快照首次捕获于
2025/12/04 03:38
3 个月前
此快照最后确认于
2025/12/04 03:38
3 个月前
查看原文

思路

暴力。
可以利用三重循环来爆搜。每次循环之后将求出的结果进行判断,看是否可取,如果可取就跳出循环。

AC Code

CPP
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,A[2000][100];
void qiong(int x)//来暴力的函数
{
	int i,j,k;
	for(i = 0;i <= 100;i++)//三重循环
	{
		for(j = 0;j <= 100 - i;j++)
		{
			for(k = 0;k <= 100 - i - j;k++)
			{
				if((i + j + k == A[x][1] || A[x][1] == -1) && (i ==  A[x][2] || A[x][2] == -1) 
						   &&(j == A[x][3] || A[x][3] == -1) &&(k == A[x][4] || A[x][4] == -1)
													&&(i * 3 + j == A[x][5] || A[x][5] == -1))//根据题意进行判断
				{ 
					A[x][2] = i;
					A[x][3] = j;
					A[x][4] = k;
					A[x][1] = i + j + k;
					A[x][5] = 3 * i + j;
					break; //如果符合跳出循环
				}
			}
		}
	}
}
int main()
{
	ll i,j,k;
	cin >> n;
	for(i = 1;i <= n;i++)
	{
		for(j = 1;j <= 5;j++)
		{
			string s;
			cin >> s;//string解决换行
			if(s == "?")
			{ 
				A[i][j] = -1;//把缺失的部分就标记为-1
				continue; 
			}
			ll sum = 0;
			for(k = 0;k < s.size();k++)
			{
				sum = sum * 10 + s[k] - '0';
			} 
			A[i][j] = sum;
		}
	}
	for(i = 1;i <= n;i++)
	{
		qiong(i);//进行代入
		for(j = 1;j <= 5;j++)
		{
			cout << A[i][j] << " ";//空格别忘了!
		}
		cout << endl;
	}
	return 0;//撒花!
}

评论

3 条评论,欢迎与作者交流。

正在加载评论...