本帖最后由 jhq999 于 2022-11-14 23:46 编辑 #include<stdio.h>
struct havechar
{
char e;
int isxy,x,y;
};
int main()
{
char ch[20]=
{
'a', 'a', 'a', 'a', 'a',
'b ', 'b', 'b', 'c', 'c',
'b', 'd','d', 'f', 'e',
'b ', 'g ','g', 'f', 'e'
};
char (*p)[5]=(char(*)[5])ch;
struct havechar hch[20]= {0};
int n=0;
for(int i=0; i<4; i+=1)
{
for(int j=0; j<5; j+=1)
{
int k=0;
for(; k<n; k+=1)
{
if(p[i][j]==hch[k].e)
{
if((1==hch[k].isxy&&i+1!=hch[k].x)||(2==hch[k].isxy&&j+1!=hch[k].y))//前俩相同元素确定是同行isxy=1,同列isxy=2,
{
hch[k].isxy=-1;//不在同一行或同一列isxy=-1
}
else if(0==hch[k].isxy)//isxy=0时是已经有这个元素了,第二次遇到这个元素
{
if(i+1==hch[k].x)hch[k].isxy=1;//如果同一行
else if(j+1==hch[k].y)hch[k].isxy=2;//同一列
else hch[k].isxy=-1;//不同行也不同列
}
break;
}
}
if(k==n)hch[n].e=p[i][j],hch[n].isxy=0,hch[n].x=i+1,hch[n].y=j+1,n+=1;//没有这个元素,添加
}
}
for(int i=0;i<n;i+=1)if(hch[i].isxy>=0)printf("%c ",hch[i].e);
return 0;
}
a c d f e g
Process returned 0 (0x0) execution time : 0.290 s
Press any key to continue.
|