牛哥的赞美文:AI生成与修改的艺术
这天,牛国神君牛哥要求他的臣子壕哥写一篇赞美自己功绩的文章。
壕哥很担心自己写不好惹得牛哥龙怒,该怎么办呢?壕哥想到了最近在牛国网络大火的AICharGPT,他决定先用AI生成一篇文章,然后进行少量修改。
AI将会生成一篇文章(用01串来表示),随后,壕哥将对这篇文章进行修改,他所能做的修改如下:
1.选择一个01串中的位置,将该位置的0或1取反
2.选择一个01串中的位置,将该位置的0或1删除
3.选择一个01串中的空位,在该空位上插入一个0或者1
为了不将文章改乱,壕哥决定刚好进行两次修改,并且修改后的文章和原文章的长度要相等。
注意,壕哥是个完美主义者,如果被你统计的文章中存在能够被壕哥以1次修改甚至更低的次数获得的文章,那么他将非常不高兴,所以请不要做删除数字再加回去这种事哦。
现在壕哥想知道,他所能做的修改能够生成多少篇本质不同的文章(本质不同文章指修改后的两个01串不相等),这个问题太难了,壕哥决定向你求助。
输入描述:
输入包括一行,包括一个01串 s (2≤s.size()≤1000)。
输出描述:
输出包括一行,包括一个整数 k,表示的是壕哥根据 s 以及修改规则能够产生的本质不同01串数量。
生成c++代码内容:#include
set
void modify(string str, int op, int pos, char ch) { if (op == 1) { // 取反 str[pos] = (str[pos] == '0') ? '1' : '0'; } else if (op == 2) { // 删除 str.erase(pos, 1); } else { // 插入 str.insert(pos, 1, ch); } s.insert(str); // 将修改后的字符串加入set中 }
int main() { string str; cin >> str; int n = str.size(); for (int i = 0; i < n; i++) { // 枚举第一次修改 string str1 = str; modify(str1, 1, i, '0'); for (int j = i+1; j < n; j++) { // 枚举第二次修改 string str2 = str1; modify(str2, 1, j, '0'); s.erase(str2); // 删除重复的字符串 modify(str2, 1, j, '1'); s.erase(str2); modify(str2, 2, j, '0'); s.erase(str2); modify(str2, 2, j, '1'); s.erase(str2); modify(str2, 3, j, '0'); s.erase(str2); modify(str2, 3, j, '1'); s.erase(str2); } } cout << s.size() << endl; return 0;
原文地址: https://www.cveoy.top/t/topic/mCCr 著作权归作者所有。请勿转载和采集!