本文共 5774 字,大约阅读时间需要 19 分钟。
//错误在于漏掉了初始状态的检查#include#include #include #include #define N 13#define M 1594323 // pow(3, 13)typedef struct node { int a[N]; int d;} Pos;int n;Pos *p[M], *begin;Pos *queue[M+1];int front, rear;void initQueue(){ front = rear = 0;}int isEmpty(){ return front == rear;}void push(Pos *p1){ queue[rear++] = p1;}Pos *pop(){ return queue[front++];}void init(){ initQueue(); memset(p, 0, sizeof(p));}int hash(int a[]){ int i, res = 0; for (i=0; i d = 0; if (checkCode(begin->a)) return begin->d; push(begin); while (!isEmpty()) { Pos *p1 = pop(); for (i=0; i a[i]), &(p1->a[i+1])); add = hash(p1->a); if (p[add] == NULL) { p[add] = (Pos *)malloc(sizeof(Pos)); for (j=0; j a[j] = p1->a[j]; p[add]->d = p1->d + 1; if (checkCode(p[add]->a)) return p[add]->d; push(p[add]); } swap(&(p1->a[i]), &(p1->a[i+1])); } } return -1;}int main(){ int i, add, a[N]; char s[N+1]; while(scanf("%d%s", &n, s) != EOF) { for (i=0; i a[i] = a[i]; begin = p[add]; printf("%d\n", BFS(begin)); } return 0;}/************************************************************** Problem: 1482 User: liangrx06 Language: C Result: Accepted Time:200 ms Memory:26092 kb****************************************************************/
#include#define N 10000int main(void){ int n, i; int a; while (scanf("%d", &n) != EOF) { int max, min; for(i=0; i max) max = a; } printf("%d %d\n", max, min); } return 0;}/************************************************************** Problem: 1483 User: liangrx06 Language: C Result: Accepted Time:40 ms Memory:912 kb****************************************************************/
#include#include int main(){ int miles; char s1[200], s2[200], type[2]; int sum = 0; while(scanf("%s", s1) != EOF) { if (strcmp(s1, "0") == 0) { printf("%d\n", sum); sum = 0; continue; } else if (strcmp(s1, "#") == 0) break; scanf("%s%d%s", s2, &miles, type); if (type[0] == 'Y') sum += ((miles <= 500) ? 500 : miles); else { sum += 2*miles; if (type[0] == 'B') sum -= (miles/2); } } return 0;}/************************************************************** Problem: 1484 User: liangrx06 Language: C Result: Accepted Time:10 ms Memory:912 kb****************************************************************/
#include#include #include #define N 80typedef struct node { int i; char c;} Letter;int cmp(const void *a, const void *b){ return ((Letter *)a)->i - ((Letter *)b)->i;}int main(){ char s[N+1]; Letter L[N], *p[3][N]; int len[3]; int k[3]; int n, i, j; while(scanf("%d%d%d", &k[0], &k[1], &k[2]) != EOF) { if (!k[0] && !k[1] && !k[2]) break; scanf("%s", s); n = strlen(s); len[0] = len[1] = len[2] = 0; for (i=0; i = 'a' && s[i] <= 'i') p[0][len[0]++] = &L[i]; else if (s[i] >= 'j' && s[i] <= 'r') p[1][len[1]++] = &L[i]; else p[2][len[2]++] = &L[i]; } for (i=0; i<3; i++) { int tmp[N]; for (j=0; j i; for (j=0; j i = tmp[(j+k[i])%len[i]]; } qsort(L, n, sizeof(L[0]), cmp); for (i=0; i
#includeint main(void){ printf("%d %d\n", 10*30, (1<<30)-1); return 0;}/************************************************************** Problem: 1488 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:908 kb****************************************************************/
#includeint main(void){ int i, j, k; int a[2][3], b[3][2], c[2][2]; while (scanf("%d", &a[0][0]) != EOF) { for(i=0; i<2; i++) { for(j=0; j<3; j++) { if (j == 0 && i == 0) continue; scanf("%d", &a[i][j]); } } for(i=0; i<3; i++) { for(j=0; j<2; j++) scanf("%d", &b[i][j]); } for(i=0; i<2; i++) { for(j=0; j<2; j++) { c[i][j] = 0; for (k=0; k<3; k++) c[i][j] += a[i][k]*b[k][j]; } } for(i=0; i<2; i++) { for(j=0; j<2; j++) { printf("%d ", c[i][j]); } printf("\n"); } } return 0;}/************************************************************** Problem: 1489 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:912 kb****************************************************************/
#include#include void MyStrcat(char dstStr[], char srcStr[]){ int n1 = strlen(dstStr), n2 = strlen(srcStr); int i; for (i = 0; i<=n2; i++) dstStr[n1+i] = srcStr[i];} int main(){ char dstStr[1000], srcStr[1000]; while(scanf("%s%s", dstStr, srcStr) != EOF) { MyStrcat(dstStr, srcStr); printf("%s\n", dstStr); } return 0;}/************************************************************** Problem: 1490 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:912 kb****************************************************************/
转载地址:http://gpeli.baihongyu.com/