#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int n;
int b[105],a[105][106];
while(cin>>n)
{
for(int i=0; i<n; i++)
b[i]=i+1;
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
{
cin>>a[i][j];
if(a[i][j]==1)
b[i]=-1;
else if(a[i][j]==2)
b[j]=-1;
else if(a[i][j]==3)
{
b[i]=-1;
b[j]=-1;
}
}
int num=0;
for(int i=0; i<n; i++)
if(b[i]!=-1)
num++;
cout<<num<<endl;
int kk=0;
for(int i=0; i<n; i++)
if(b[i]==i+1)
{
if(kk==0)
kk=1;
else
cout<<" ";
cout<<i+1;
if(i==n-1)
cout<<endl;
}
}
}
两种最显然的方法。1.用个数组标记一下每辆车是否被撞,最后遍历一下。
2.分别对每辆车去遍历一遍跟它有关的行和列,判断一下是否被撞过即可。