1、问题描述
2、本题细节众多,注意所给两个条件,其一为矩阵是问题意义上对称的,其二,质量的判断一次即决定,没必要重复判断。可以在输入过程中判断
3、
#include <iostream>
#include<cstring>
#include<set>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
#define maxn 100+10
int A[maxn][maxn];
bool flag[maxn];
int main() {
int n;
int count;
cin>>n;
count=n;
memset(flag,true ,sizeof(flag));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>A[i][j];
if(i<j){
if(A[i][j]==1&&flag[i]==true){
flag[i]=false;
count--;
}
if(A[i][j]==2&&flag[j]==true){
flag[j]=false;
count--;
}
if(A[i][j]==3&&(flag[j]!=false||flag[i]!=false)){
if(flag[j]&&flag[i])count-=2;
else count--;
flag[i]=false;
flag[j]=false;
}
}
}
}
cout<<count<<endl;
for(int i=0;i<n;i++){
if(flag[i])cout<<i+1<<' ';
}
return 0;
}