链接:BNU 1043
思路:一个方块不动,转动另一个,旋转四次,求得总得分,最后除以4,即为所求期望值。
#include<stdio.h>
#include<string.h>
int main()
{
int i, j;
int k=4;
double ans = 0;
char a[10][10],b[10][10],c[10][10];
for (i=0; i<8; i++)
gets(a[i]);
for (i=0; i<8; i++)
gets(b[i]);
while (k--) //方块b旋转四次
{
for (i=0; i<8; i++)
{
for (j=0; j<8; j++)
{
c[j][7-i] =b[i][j]; //将b旋转90度存入c中 优化这一步花了好长时间
if (a[i][j] == b[i][j])
{
if (a[i][j]=='.')ans++;
if (a[i][j]=='*')ans += 2;
if (a[i][j]=='#')ans += 3;
}
}
}
for (i=0; i<8; i++)
for(j=0; j<8; j++)b[i][j]=c[i][j]; //将旋转后的c存入b中,以便循环判断
}
printf("%.2lf\n", ans/4);
return 0;
}