9度OJ 1171:C反転(マトリクス計算)
時間制限:1秒
メモリ制限:32メガ
特殊問題:いいえ
提出:4649
解決:1530
タイトルの説明:
まず5*5の配列を入力し、4つの数を入力します.最初の2つは操作タイプを表し、後の2つの数x yは操作データがx yを左上隅とするデータを表します.
操作タイプは4種類あります:1 2表示:90度、時計回り、反転4個数1 3表示:90度、時計回り、反転9個数2表示:90度、反時計回り、反転4個数2 3表示:90度、反時計回り、反転9個数
入力:
複数セットのデータを入力します.各グループに5*5の配列を入力し、4つの数を入力します.最初の2つは操作タイプを表し、後の2つの数x yは操作データがx yを左上隅とするデータを表します.
出力:
反転した配列を出力します.
サンプル入力:
サンプル出力:
ソース:
2010年北京郵電大学コンピュータ研究生気試験の本題
考え方:
全体的な考え方は90度回転するたびに、超えると何度も回転します.エラーの詳細が多く、デバッグが多い可能性があります.
コード:
メモリ制限:32メガ
特殊問題:いいえ
提出:4649
解決:1530
タイトルの説明:
まず5*5の配列を入力し、4つの数を入力します.最初の2つは操作タイプを表し、後の2つの数x yは操作データがx yを左上隅とするデータを表します.
操作タイプは4種類あります:1 2表示:90度、時計回り、反転4個数1 3表示:90度、時計回り、反転9個数2表示:90度、反時計回り、反転4個数2 3表示:90度、反時計回り、反転9個数
入力:
複数セットのデータを入力します.各グループに5*5の配列を入力し、4つの数を入力します.最初の2つは操作タイプを表し、後の2つの数x yは操作データがx yを左上隅とするデータを表します.
出力:
反転した配列を出力します.
サンプル入力:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
1 3 1 1
サンプル出力:
11 6 1 4 5
12 7 2 9 10
13 8 3 14 15
16 17 18 19 20
21 22 23 24 25
ソース:
2010年北京郵電大学コンピュータ研究生気試験の本題
考え方:
全体的な考え方は90度回転するたびに、超えると何度も回転します.エラーの詳細が多く、デバッグが多い可能性があります.
コード:
#include <stdio.h>
#define M 5
struct point {
int i;
int j;
};
struct point rotate(int n, int i, int j, int x, int y, int degree)
{
struct point p;
p.i = i;
p.j = j;
int tmp;
for (int k=1; k<=degree/90; k++)
{
tmp = p.i;
p.i = (x-y) + p.j;
p.j = (x-1) + (y-1) + n-1 - tmp;
}
return p;
}
int main(void)
{
int i, j;
int d, n, x, y;
int a[M][M], b[M][M];
struct point p;
int degree;
while (scanf("%d", &a[0][0]) != EOF)
{
for(i=0; i<M; i++)
{
for(j=0; j<M; j++)
{
if (i == 0 && j == 0)
continue;
scanf("%d", &a[i][j]);
}
}
scanf("%d%d%d%d", &d, &n, &x, &y);
if (d == 1)
degree = 90;
else
degree = 270;
for(i=0; i<M; i++)
{
for(j=0; j<M; j++)
{
if (i<x-1 || i>=x-1+n || j<y-1 || j>=y-1+n)
b[i][j] = a[i][j];
else
{
p = rotate(n, i, j, x, y, degree);
b[p.i][p.j] = a[i][j];
}
}
}
//printf("i=%d, j=%d
", i, j);
for(i=0; i<M; i++)
{
for(j=0; j<M; j++)
{
if (j != 0)
printf(" ");
printf("%d", b[i][j]);
}
printf("
");
}
}
return 0;
}
/**************************************************************
Problem: 1171
User: liangrx06
Language: C
Result: Accepted
Time:0 ms
Memory:912 kb
****************************************************************/