一道难题,人生第一(不是题解是答案)
2023-01-31 15:04:59
发布于:广东
我发现,从我进入csgo社区之后,我仅有三篇关于c++的问题,其余时间一直在唱跳rap(坤坤王国),所以,今天我打算写一个题目的答案,这个题目我在csgo社区里面没看见过,知道翻了一下社区看到了1月1日那位叫。。。。。。(kk-)的人发了一个讨论(当天讨论记录),一进去就看到有道题目,打开这道题目,映入眼帘的就是一堆English。啊哈哈,反正是一堆英语,看不懂,后来翻译了才知道,大致意思是这样的:
奶牛们发明了一种名为 Herdle 的新型解谜游戏,在牛界引起了轰动。
每天都会有一个新谜题发布供奶牛解决。游戏采用 3x3 方阵的形式表示农场的一块田地,田地的每个方格都由特定品种的奶牛占据。总共只有 26 种可能的品种,每一种由 A 到 Z 中的不同大写字母标识。玩家不会被告知田地中的奶牛品种排列方式——游戏目标是通过一系列猜测确定它们。
每次猜测,奶牛们输入一个 3x3 的大写字母方阵,表示该田地可以用奶牛填充的可能方式。猜测的某些方格可能是正确的。这些方格以绿色高亮显示,让奶牛们知道这些是正确的。猜测的另一些方格可能填入了品种正确但位置错误的奶牛。这些以黄色高亮显示。
黄色高亮显示的方格的数量可以帮助指示某个品种的奶牛数量。 例如,假设猜测方阵包含 4 头品种 A 的奶牛,而答案方阵包含 2 只品种 A 的奶牛,其中没有正确位置上的 A (即,它们都不应该是绿色的)。 在这种情况下,猜测方阵中只有两个 A 应以黄色高亮显示。 更准确地说,如果猜测方阵中有 x 个特定品种的奶牛,并且 答案方阵中有 y<x 头该品种奶牛(不包括位置正确而得到绿色高亮显示的奶牛),那么猜测方阵的 x 头奶牛中只有 y 头奶牛应该以黄色高亮显示。
然后,我一发现这道题很难,以我的实力,基本上做不出来。所以我上网查了一下资料,这一查就是7天,终于我写出来了(当然是看别人的),当我运行的时候,全是re,所以只能给你们一个大体的方略,代码如下:
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100
#define MOD 1000000007
int n, guess_count[26], actual_count[26], green, yellow;
string actual[3], guess[3];
string line;
using namespace std;
int main(){
for(int i=1;i<=3;i++){
cin>>actual[i];
for(int j=0;j<3;j++){
actual_count[actual[i][j]-'A']++;
}
}
for(int i=0;i<3;i++){
cin>>guess[i];
for(int j=0;j<3;j++){
guess_count[guess[i][j]-'A']++;
}
}
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(actual[i][j]==guess[i][j]){
green++;
guess_count[guess[i][j]-'A']--;
actual_count[actual[i][j]-'A']--;
}
}
}
for(int i=0;i<26;i++){
yellow+=min(actual_count[i],guess_count[i]);
}
cout<<green<<endl;
cout<<yellow;
}
谢谢大家,对了,你们怎么看,讨论区放水
全部评论 4
你们怎么看,说一说
2023-01-31 来自 广东
1我可以试试后天再做一个题解
2023-01-31 来自 广东
1是ACGO吧。。
2023-07-23 来自 广东
0666 这道题是USACO的题,所以是全英文,建议官方出一个翻译版本
2023-01-31 来自 浙江
0
有帮助,赞一个