题目一、求关系的传递闭包
输入
一次输入一个关系矩阵,每一行两个相邻元素之间用一个空格隔开,输入元素的行与列分别对应关系矩阵的行与列。关系的基数小于12。
输出
输出该关系的传递闭包所对应的关系矩阵。
友情提示:可以使用while (scanf("%d",&a)!=EOF)
测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示
- 0 1 0 0↵
- 1 0 1 0↵
- 0 0 0 1↵
- 0 1 0 0↵
以文本方式显示
- 1 1 1 1↵
- 1 1 1 1↵
- 1 1 1 1↵
- 1 1 1 1↵
1秒 64M 0
-> 本题参考Warshell算法
#include<bits/stdc++.h>
using namespace std;
int Matrix[144];
int main(){
int n=0, a;
while ( scanf("%d",&a)!=EOF ) {
Matrix[n] = a;
n++;
}
a = sqrt(n);
for(int k=0;k<a;k++){
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
if(Matrix[i*a+j]!=1)
Matrix[i*a+j]=Matrix[i*a+k]&Matrix[k*a+j];
}
}
}
for (int i=0; i<a; i++) {
for (int j=0; j<a; j++) {
if (j==0) printf("%d",Matrix[i*a+j]);
else printf(" %d",Matrix[i*a+j]);
}
printf("\n");
}
return 0;
}
题目二、求偏序集中的极大元与极小元
输入
输入偏序集<A, ≤>,A中的元素数不超过20个,分别用单个小写的英文字母表示。
输入的第一行给出A中的各个元素,两个相邻的元素之间用逗号隔开。
输入的第二行给出偏序关系≤,用有序对的形式给出(只给出哈斯图中的满足覆盖的两个元素形成的有序对),如<a,b>,<c,a>等等,两个相邻的有序对之间用逗号隔开。
输出
输出A的极小元与极大元。
输出的第一行给出各个极小元,两个相邻元素之间用逗号隔开,输出的元素要求按照英文字母的自然顺序排列输出。
输出的第二行给出各个极大元,两个相邻元素之间用逗号隔开,输出的元素要求按照英文字母的自然顺序排列输出。
测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示
- a,b,c,d↵
- <a,b>,<c,d>↵
以文本方式显示
- a,c↵
- b,d↵
1秒 64M 0
对于每一个元素,统计它的前缀和后缀。如果它的前缀数是0,表明它是极小值;如果它的后缀数是0,表明它是极大值。
#include<bits/stdc++.h>
using namespace std;
struct ch {
char name;
int before=0, after=0;
};
ch character[20];
int main(){
string str;
cin >> str;
for (int i=0; i<=str.length(); i+=2) {
character[i/2].name = str[i];
}
int n = (str.length()+1)/2;
cin >> str;
for (int i=0; i<=str.length(); i+=6) {
for (int j=0; j<n; j++) {
if (str[i+1]==character[j].name) {
character[j].after++;
break;
}
}
for (int j=0; j<n; j++) {
if (str[i+3]==character[j].name) {
character[j].before++;
break;
}
}
}
int k=0;
for (int i=0; i<n; i++) {
if (character[i].before==0) {
if (k==0) {
printf("%c",character[i].name);
k=1;
}
else {
printf(",%c",character[i].name);
}
}
}
printf("\n");
k=0;
for (int i=0; i<n; i++) {
if (character[i].after==0) {
if (k==0) {
printf("%c",character[i].name);
k=1;
}
else {
printf(",%c",character[i].name);
}
}
}
printf("\n");
return 0;
}
这两题都很简单,不浪费时间了