#include<iostream>#include<string>#include<vector>usingnamespace std;
string letter[26][7];voidoutPut(string a){
for(int j =0; j <7; j++){
for(int i =0; i < a.size(); i++){
cout << letter[a[i]-'A'][j];if(i < a.size()-1)
cout <<" ";}
cout << endl;}}intmain(){
for(int i =0; i <26; i++){
for(int j =0; j <7; j++)getline(cin, letter[i][j]);}
string print;getline(cin, print);
vector<string> world;int index =0;
string w ="";while(index < print.size()){
while(print[index]>='A'&& print[index]<='Z'&& index < print.size())
w +=(print[index++]);if(w !=""){
world.push_back(w);
w.clear();}
index++;}for(int i =0; i < world.size(); i++){
outPut(world[i]);if(i < world.size()-1)
cout << endl;}return0;}
7-2 Block Reversing
#include<cstdio>#include<vector>usingnamespace std;constint maxn =1e5+10;struct node{
int data, address, next;}m[maxn];
vector<int> res[maxn];intmain(){
int head, n, num;scanf("%d%d%d",&head,&n,&num);for(int i =0; i < n; i++){
int ad;scanf("%d",&ad);scanf("%d%d",&m[ad].data,&m[ad].next);
m[ad].address = ad;}int p = head, index =0;while(p !=-1){
if(res[index].size()< num)
res[index].push_back(p);else{
index ++;
res[index].push_back(p);}
p = m[p].next;}for(int i = index; i >=0; i--){
for(int j =0; j < res[i].size()-1; j++)printf("%05d %d %05d\n", res[i][j], m[res[i][j]].data, res[i][j+1]);int las = res[i].size()-1;printf("%05d %d ", res[i][las], m[res[i][las]].data);if(i >0)printf("%05d\n", res[i-1][0]);elseprintf("-1\n");}}
7-3 Summit
#include<cstdio>#include<vector>usingnamespace std;constint maxn =210;bool e[maxn][maxn], vis[maxn];int n, m;boolisClique(vector<int>&a){
for(int i =0; i < a.size(); i++){
for(int j = i+1; j < a.size(); j++)if(e[a[i]][a[j]]==false)returnfalse;}returntrue;}boolisMax(vector<int>&a,int&h){
for(int i =1; i <= n; i++){
if(vis[i]==true)continue;bool flag =true;for(int j =0; j < a.size(); j++){
if(e[i][a[j]]==false)
flag =false;}if(flag ==true){
h = i;returnfalse;}}returntrue;}intmain(){
scanf("%d%d",&n,&m);for(int i =0; i < m; i++){
int a, b;scanf("%d%d",&a,&b);
e[a][b]= e[b][a]=true;}int k;scanf("%d",&k);for(int i =1; i <= k; i++){
int num, x, h;scanf("%d",&num);
vector<int> temp;fill(vis, vis+maxn,false);for(int j =0; j < num; j++){
scanf("%d",&x);
temp.push_back(x);
vis[x]=true;}if(!isClique(temp))printf("Area %d needs help.\n", i);elseif(!isMax(temp, h))printf("Area %d may invite more people, such as %d.\n", i, h);elseprintf("Area %d is OK.\n", i);}}