国产丰满大乳无码免费播放_久草一级毛片_国产av黄色一区二区_亚洲一级 片内射欧美乱强上司_制服丝袜亚洲日韩中文字幕欧美_亚洲av中文小島_国产精品无码久久av嫩草下载_91视频黄片软件APP大全

XML|HTML|TXT
您當前位置: 軟件開發>> 新利在線娛樂>> 軟件開發技術>> 瀏覽文章

POJ 3106Flip and Turn(模擬)

Flip and Turn

Time Limit: 2000MS
Memory Limit: 65536K
Total Submissions: 957
Accepted: 330

Description

Let us define a set of operations on a rectangular matrix of printable characters.

A matrix A with m rows (1-st index) and n columns (2-nd index) is given. The resulting matrix B is defined as follows.

Transposition by the main diagonal (operation identifier is ‘1’): Bj,i =Ai,jTransposition by the second diagonal (‘2’): Bn?j+1,m?i+1 = Ai,jHorizontal flip (‘H’): Bm?i+1,j = Ai,jVertical flip (‘V’): Bi,n?j+1 = Ai,jRotation by 90 (‘A’), 180 (‘B’), or 270 (‘C’) degrees clockwise; 90 degrees case: Bj,m?i+1 = Ai,jRotation by 90 (‘X’), 180 (‘Y’), or 270 (‘Z’) degrees counterclockwise; 90 degrees case: Bn?j+1,i =Ai,j

You are given a sequence of no more than 100 000 operations from the set. Apply the operations to the given matrix and output the resulting matrix.

Input

At the first line of the input file there are two integer numbers — m and n (0 < m, n≤ 300). Then there are m lines with n printable characters per line (we define a printable character as a symbol with ASCII code from 33 to 126 inclusive). There will be no additional symbols at these lines.

The next line contains the sequence operations to be performed, specified by their one-character identifiers. The operations should be performed from left to right.

Output

Two integer numbers, the number of rows and columns in the output matrix. Then the output matrix must follow, in the same format as the input one.

Sample Input

1

2

3

4

5

3 4

0000

a0b0

cdef

A1

Sample Output

1

2

3

4

3 4

cdef

a0b0

0000



題目大意:給你一個m*n的矩陣,通過順時針旋轉,逆時針旋轉,水平翻轉,垂直翻轉,對角線旋轉,反對角線旋轉變換得到新矩陣。但是不能直接對原矩陣操作,時間復雜度為O(10^5*10^5),會超時,但是如何保存變化的過程呢,我們不需要知道變化過程,只需要知道結果即可。由于旋轉翻轉都是中心對稱的,可以采用一個2*2的小正方形記錄變化情況,然后小矩陣變化得出最終結果之后再相應變化大矩陣。時間復雜度為O(10^5*5)
題目地址:Flip and Turn
AC代碼:

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

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

#include

#include

#include

#include

#include

#include

using namespace std;

char a[305][305];

char b[305][305];

char str[100005];

int m,n;

int tb[3][3];

void con1()

{

int i,j;

for(i=1; i<=n; i++)

{

for(j=1; j<=m; j++)

{

b[i][j]=a[j][i];

}

}

for(i=1; i<=n; i++)

{

for(j=1; j<=m; j++)

a[i][j]=b[i][j];

a[i][j]='\0';

}

swap(n,m);

}

void con2()

{

int i,j;

for(i=1; i<=m; i++)

{

for(j=1; j<=n; j++)

{

b[n-j+1][m-i+1]=a[i][j];

}

}

for(i=1; i<=n; i++)

{

for(j=1; j<=m; j++)

a[i][j]=b[i][j];

a[i][j]='\0';

}

swap(n,m);

}

void con3()

{

int i,j;

for(i=1; i<=m; i++)

{

for(j=1; j<=n; j++)

{

b[m-i+1][j]=a[i][j];

}

}

for(i=1; i<=m; i++)

{

for(j=1; j<=n; j++)

a[i][j]=b[i][j];

a[i][j]='\0';

}

}

void con4()

{

int i,j;

for(i=1; i<=m; i++)

{

for(j=1; j<=n; j++)

{

b[i][n-j+1]=a[i][j];

}

}

for(i=1; i<=m; i++)

{

for(j=1; j<=n; j++)

a[i][j]=b[i][j];

a[i][j]='\0';

}

}

void con5()

{

int i,j;

for(i=1; i<=m; i++)

{

for(j=1; j<=n; j++)

{

b[j][m-i+1]=a[i][j];

}

}

for(i=1; i<=n; i++)

{

for(j=1; j<=m; j++)

a[i][j]=b[i][j];

a[i][j]='\0';

}

swap(m,n);

}

void con6()

{

int i,j;

for(i=1; i<=m; i++)

{

for(j=1; j<=n; j++)

{

b[n-j+1][i]=a[i][j];

}

}

for(i=1; i<=n; i++)

{

for(j=1; j<=m; j++)

a[i][j]=b[i][j];

a[i][j]='\0';

}

swap(m,n);

}

void debug()

{

int i,j;

for(i=1;i<=2;i++)

{

for(j=1;j<=2;j++)

cout<='A'&&str[i]<='C')

{

int s=str[i]-'A'+1;

for(j=0;j='X'&&str[i]<='Z')

{

int s=str[i]-'X'+1;

for(j=0;j




手機:18678812288 E-Mail:1069706080@qq.com
地址:山東省濟南市舜耕路泉城公園東門園內向北50米 魯ICP備07011972號 版權所有2008-2013 新利體育18
Baidu