#include <iostream> #include <map> #include <vector> #include <algorithm> void brotherWord(std::vector<std::string> strVect, std::string word, int k) { std::multimap<std::string, int> rtnMap; //存放是兄弟单词的容器 std::vector<std::string>::iterator iter = strVect.begin(); while(iter != strVect.end()) { std::string curWord = *iter; if(curWord != word) //兄弟单词不能一模一样 { std::string tempword = word; std::sort(tempword.begin(), tempword.end()); std::string tempcurword = curWord; std::sort(tempcurword.begin(), tempcurword.end()); if(tempcurword == tempword) //是兄弟单词 { rtnMap.insert(std::pair<std::string, int>(curWord, 1)); } } iter++; } // print(rtnMap); std::vector<std::string> rtnVect; std::multimap<std::string, int>::iterator iterMap = rtnMap.begin(); while(iterMap != rtnMap.end()) { rtnVect.push_back(iterMap->first); iterMap++; } std::cout << rtnVect.size() << std::endl; if(rtnVect.size() > 1) std::cout << rtnVect[k-1] << std::endl; } int main() { int n; std::cin >> n; std::vector<std::string> strVect; while(n--) { std::string temp; std::cin >> temp; strVect.push_back(temp); } std::string word; std::cin >> word; int k; std::cin >> k; brotherWord(strVect, word, k); return 0; }注释
时间: 2024-01-21 15:02:17 浏览: 68
这段代码是一个查找兄弟单词的程序。它首先从输入中读取一个整数n,表示要输入的单词数量。然后依次读取n个单词,存储在一个名为strVect的字符串向量中。接下来,程序读取一个单词word和一个整数k。函数brotherWord将在strVect中查找与word是兄弟单词的单词,并将它们存储在一个名为rtnVect的字符串向量中。如果rtnVect中的单词数量大于1,则输出第k个单词。
整体来说,这段代码实现了一个简单的兄弟单词查找功能。
相关问题
#include <iostream> #include <vector> #include <string> #include <algorithm> #include <map> #include <thread> #include "List.h" #include "Node.h" using namespace std; int main(void) { auto* head = new Node<int>(10); //auto *list = new List<int>(head); List<int> list(head); //list->Display(); return 0; }
这段代码包含了 List 类和 Node 类的头文件,并且定义了一个 main 函数。在 main 函数中,它首先创建了一个 Node 对象 head,数据值为 10。然后,它使用 head 对象创建了一个 List 对象 list。最后,它调用了 List 类的成员函数 Display 输出链表中的元素。
需要注意的是,由于 List 类已经包含了头节点指针 _head 和链表长度 _size,因此没有必要再使用指针变量 list 来引用 List 对象。因此,可以直接使用 List<int> list(head) 来创建对象。另外,注释掉的 list->Display() 可以直接通过 list.Display() 来调用,因为 Display 函数是一个公有成员函数。
把#include <iostream> #include <algorithm> #include <cstdio> #include <cmath> #include <vector> #include <map> #include <vector> #include <string> #include <cstring> #define fast ios::sync_with_stdio(false),cin.tie(0) using namespace std; typedef pair<int, int> PII; typedef long long LL; const int N = 2e5+10; int T, t; string s[3]; void init() { /* #### #### #### # # # # # # # # #*/ // 第一行,中间行,和最后一行 // 构造成 #### #### #### for(int i = 0; i < 3; i ++ ) { if(i) s[0] += " "; s[0] += "###"; for(int j = 0; j < t; j ++ ) s[0] += "#"; } // 上半部分 // 构造成 # # # # s[1] += "# "; for(int i = 0; i < t; i ++ ) s[1] += " "; s[1] += "# #"; for(int i = 0; i < 2 * t + 5; i ++ ) s[1] += " "; s[1] += "#"; // 下半部分 // 构造成 # # # # # s[2] += "# "; for(int i = 0; i < t; i ++ ) s[2] += " "; s[2] += "# # "; for(int i = 0; i < t; i ++ ) s[2] += " "; s[2] += "#"; for(int i = 0; i < t + 3; i ++ ) s[2] += " "; s[2] += "#"; } int main() { scanf("%d", &t); int n = t * 2 + 5; init(); for(int i = 1; i <= n; i ++ ) { if(i == 1 || i == n || i == (n + 1)/2) cout << s[0] << endl; else if(i < (n + 1) / 2) cout << s[1] << endl; else cout << s[2] << endl; } return 0; } 这段代码变成C语言
把#include <iostream>改为#include <stdio.h>,把using namespace std;删除,将cout改为printf即可:
```c
#include <stdio.h>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <vector>
#include <map>
#include <vector>
#include <string>
#include <cstring>
#define fast ios::sync_with_stdio(false),cin.tie(0)
typedef pair<int, int> PII;
typedef long long LL;
const int N = 2e5+10;
int T, t;
char s[3][N];
void init()
{
// 第一行,中间行,和最后一行
// 构造成 #### #### ####
for(int i = 0; i < 3; i ++ )
{
if(i) strcat(s[0], " ");
strcat(s[0], "###");
for(int j = 0; j < t; j ++ ) strcat(s[0], "#");
}
// 上半部分
// 构造成 # # # #
s[1][0] = '#';
s[1][1] = ' ';
for(int i = 2; i < t+2; i ++ ) s[1][i] = '#';
s[1][t+2] = ' ';
for(int i = t+3; i < 2 * t + 5; i ++ ) s[1][i] = ' ';
s[1][2*t+5] = '#';
// 下半部分
// 构造成 # # # # #
s[2][0] = '#';
s[2][1] = ' ';
for(int i = 2; i < t+2; i ++ ) s[2][i] = '#';
s[2][t+2] = ' ';
for(int i = t+3; i < 2 * t + 3; i ++ ) s[2][i] = ' ';
s[2][2*t+3] = '#';
for(int i = 2*t+4; i < t+7; i ++ ) s[2][i] = ' ';
s[2][t+7] = '#';
}
int main()
{
scanf("%d", &t);
int n = t * 2 + 5;
init();
for(int i = 1; i <= n; i ++ )
{
if(i == 1 || i == n || i == (n + 1)/2) printf("%s\n", s[0]);
else if(i < (n + 1) / 2) printf("%s\n", s[1]);
else printf("%s\n", s[2]);
}
return 0;
}
```
阅读全文