您的位置:首页 > 其它

usaco-tranform:pass

2014-08-29 15:13 162 查看
这个题目是最简单的,虽然步数多了些,但它是最简单的,没怎么费脑力:

/*
ID: qq104801
LANG: C++
TASK: transform
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

/* for debug only:counter
*/
void debug_dummy(void)
{
return;
}

const int MAX=10;
typedef struct _kk
{
char x[MAX][MAX];
}kk,*pkk;

int n;
kk a,b,t,t1,t2;

void rotate(kk* src,kk* tar)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
tar->x[i][j]=src->x[n-j-1][i];
}

void rotate1()
{
rotate(&a,&t);
}

void rotate2()
{
rotate(&a,&t2);
rotate(&t2,&t);
}

void rotate3()
{
rotate(&a,&t);
rotate(&t,&t2);
rotate(&t2,&t);
}

void mirror()
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
t.x[i][j]=a.x[i][n-1-j];
}

int cmp(kk* src,kk* tar)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if (tar->x[i][j]!=src->x[i][j])
return 0;
return 1;
}

int trans()
{

rotate1();if (cmp(&b,&t))return 1;
rotate2();if (cmp(&b,&t))return 2;
rotate3();if (cmp(&b,&t))return 3;
mirror();if (cmp(&b,&t))return 4;
rotate(&t,&t1);if(cmp(&b,&t1))return 5;
rotate(&t1,&t);if(cmp(&b,&t))return 5;
rotate(&t,&t1);if(cmp(&b,&t1))return 5;
if (cmp(&a,&b))return 6;
return 7;
}

void test()
{
printf("%d\n",n);
printf("a:\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("%c",a.x[i][j]);
printf("\n");
}
printf("b:\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("%c",b.x[i][j]);
printf("\n");
}
printf("t:\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("%c",t.x[i][j]);
printf("\n");
}
}

main () {
FILE *fin = fopen ("transform.in", "r");
FILE *fout = fopen ("transform.out", "w");
fscanf(fin,"%d",&n);
assert(getc(fin)=='\n');
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
a.x[i][j]=getc(fin);
assert(getc(fin)=='\n');
}

for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
b.x[i][j]=getc(fin);
assert(getc(fin)=='\n');
}

int b;
b=trans();
fprintf(fout,"%d\n",b);
//printf("%d\n\n",b);
//test();
fclose(fin);
fclose(fout);
exit (0);
}


看下测试数据用例:

ll tom [qq104801]
TASK: transform
LANG: C++

Compiling...
Compile: OK

Executing...
Test 1: TEST OK [0.011 secs, 3520 KB]
Test 2: TEST OK [0.003 secs, 3520 KB]
Test 3: TEST OK [0.008 secs, 3520 KB]
Test 4: TEST OK [0.014 secs, 3520 KB]
Test 5: TEST OK [0.008 secs, 3520 KB]
Test 6: TEST OK [0.016 secs, 3520 KB]
Test 7: TEST OK [0.008 secs, 3520 KB]
Test 8: TEST OK [0.005 secs, 3520 KB]

All tests OK.

Your program ('transform') produced all correct answers! This is your submission #2 for this problem. Congratulations!

Here are the test data inputs:

------- test 1 ----
3
---
---
---
---
-@-
---
------- test 2 ----
5
-@@@-
-@@--
-@---
-----
-----
-----
----@
---@@
--@@@
-----
------- test 3 ----
5
@@@@@
@---@
@@@@@
@@@@@
@@@@@
@@@@@
@@@@@
@@@@@
@---@
@@@@@
------- test 4 ----
6
-@-@-@
@-@-@-
-@-@-@
@-@-@-
-@-@-@
@-@-@-
@-@-@-
-@-@-@
@-@-@-
-@-@-@
@-@-@-
-@-@-@
------- test 5 ----
3
@@@
---
@@@
@@@
---
@@@
------- test 6 ----
4
@@@@
@@@@
-@@@
@@@@
@@@@
@@@@
@@@-
@@@@
------- test 7 ----
4
@-@@
@@@@
@@@@
@@@@
@@@@
@@@@
@@@@
@-@@
------- test 8 ----
10
@--------@
----------
----------
----------
----------
----------
----------
----------
----------
----------
@---------
----------
----------
----------
----------
----------
----------
----------
----------
---------@

Keep up the good work!
Thanks for your submission!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: