| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:水过,,附代码留念In Reply To:水过,,附代码留念 Posted by:dut317410027 at 2010-05-23 19:15:57 你的代码 5 2 是错的。居然能过。我的代码 没有错误,居然过不了。难道是内定的?
=========================================================
#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
const int sx[4] = {1, 0, -1, 0};
const int sy[4] = {0, 1, 0, -1};
class Snake {
public:
Snake(int width, int height) {
totalcount = width * height;
this->width = width + 2;
this->height = height + 2;
matrix = new char[this->width * this->height];
memset(matrix, '0', sizeof(this->width * this->height));
set(1, 0, 'P');
set(width + 1, 1, 'P');
set(0, height, 'P');
set(width, height + 1, 'P');
}
~Snake() {
delete [] matrix;
}
void output() {
for (int y = 1; y < height - 1; y++) {
for (int x = 1; x < width - 1; x++) {
cout << setw(4) << get(x, y);
}
cout << endl;
}
}
void fill() {
currentx = 1;
currenty = 1;
int done = 0;
postion = -1;
idx = 0;
while (done < totalcount) {
set(currentx, currenty, nextLetter());
done++;
nextPos();
}
}
private:
char* matrix;
int width;
int height;
int currentx;
int currenty;
int totalcount;
int postion;
int idx;
char get(int x, int y) {
return matrix[x + y * width];
}
void set(int x, int y, char c) {
matrix[x + y * width] = c;
}
char nextLetter() {
const static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
postion++;
postion %= 26;
return table[postion];
}
void nextPos() {
if (get(currentx + sx[idx], currenty + sy[idx]) != 0) {
idx++;
idx %= 4;
}
currentx += sx[idx];
currenty += sy[idx];
}
};
int main() {
int m, n;
while (cin >> m >> n) {
Snake s(n, m);
s.fill();
s.output();
}
return 0;
}
==========================================================
> #include <stdio.h>
> #include <stdlib.h>
> int a[10000][10000];
> int main()
> {
> int n,m,i,j,flag,k;
> while (scanf("%d%d",&n,&m)!=EOF)
> {
> k=65;
> if (n%2==0)
> {
> flag=n/2;
> for (i=0;i<flag;i++)
> {
> for (j=i;j<m-i;j++)
> {
> a[i][j]=k;
> k++;
> if (k==91)
> {
> k=65;
> }
> }
> for (j=i+1;j<n-i-1;j++)
> {
> a[j][m-i-1]=k;
> k++;
> if (k==91)
> {
> k=65;
> }
>
> }
> for (j=m-i-1;j>=i;j--)
> {
> a[n-1-i][j]=k;
> k++;
> if (k==91)
> {
> k=65;
> }
> }
> for (j=n-i-2;j>=i+1;j--)
> {
> a[j][i]=k;
> k++;
> if (k==91)
> {
> k=65;
> }
> }
> }
> for (i=0;i<n;i++)
> {
> for (j=0;j<m;j++)
> {
> printf(" %c",a[i][j]);
> }
> printf("\n");
> }
> }
> else
> {
> flag=n/2+1;
>
> for (i=0;i<flag;i++)
> {
> for (j=i;j<m-i;j++)
> {
> a[i][j]=k;
> k++;
> if (k==91)
> {
> k=65;
> }
> }
> for (j=i+1;j<n-i-1;j++)
> {
> a[j][m-i-1]=k;
> k++;
> if (k==91)
> {
> k=65;
> }
>
> }
>
> if (i!=flag-1)
> for (j=m-i-1;j>=i;j--)
> {
> a[n-1-i][j]=k;
> k++;
> if (k==91)
> {
> k=65;
> }
> }
> for (j=n-i-2;j>=i+1;j--)
> {
> a[j][i]=k;
> k++;
> if (k==91)
> {
> k=65;
> }
> }
> }
> for (i=0;i<n;i++)
> {
> for (j=0;j<m;j++)
> {
> printf(" %c",a[i][j]);
> }
> printf("\n");
> }
> }
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator