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 |
求大神指点。discuss里的测试数据全部过了。咋还是WA。。。#include <stdio.h> #include <string.h> #include <stdlib.h> #include <string.h> #define MAX_N 11003 int Visit[MAX_N]; int Storage[MAX_N]; int N = 0, K = 0, iWholeNum = 0; initVariable() { int i = 0; for(i=0; i<MAX_N; i++) { Visit[i]=0; Storage[i]=0; } } printfTest() { int i = 0; printf("the storage \n"); for(i = 0; i<=N; i++) { printf("the i is %d, Storage[i] is %d\n", i, Storage[i]); } printf("the visit \n"); for(i = 0; i<=N; i++) { printf("the i is %d, Visit[i] is %d\n", i, Visit[i]); } } int main() { int i = 0, j = 0, k = 0; int iVacumm = 0; int iMove = 0; int iTemp = 0,iLast = 0, iCycle = 0; int iFileSn = 0; initVariable(); scanf("%d %d",&N, &K); for(i = 0; i<K; i++) { scanf("%d", &iFileSn); // printf("i is %d, iFileSn is %d\n", i, iFileSn); for(j = 0; j<iFileSn; j++) { iWholeNum++; scanf("%d", &Storage[iWholeNum]); Visit[Storage[iWholeNum]] = iWholeNum; // printf("j is %d, Storage[iWholeNum] %d, Visit[[Storage[iWholeNum]]] is %d\n", j, Storage[iWholeNum], Visit[Storage[iWholeNum]]); } } //for(i = 0; i<=N; i++) //{ // printf("the i is %d, Visit[i] is %d\n", i, Visit[i]); //} for(i = N; i>=1; i--) { if( 0 == Visit[i]) { iVacumm = i; break; } } // printf("the iVacumm is %d\n", iVacumm); for(i = 1; i<=iWholeNum; i++) { if(i != Storage[i]) { if(0 == iMove) iMove = 1; // printf("i is %d, Visit[i] is %d\n", i, Visit[i]); if(0 == Visit[i]) { printf("%d %d\n", Storage[i], i ); Visit[Storage[i]] = 0; Visit[i] = i; Storage[i] = i; }else { iTemp = i; while(Visit[iTemp]) { // printf("iTemp %d, Visit[iTemp] is %d\n", iTemp, Visit[iTemp]); iTemp = Visit[iTemp]; if(i == Visit[iTemp]) { // printf("the Cycle \n"); iCycle = 1; break; } } iLast = iTemp; // printf("the final iTemp is %d, Storage[iTemp] is %d, iCycle is %d, iLast is %d\n",iTemp, Storage[iTemp], iCycle, iLast); if (1==iCycle) { //printf("Cycle\n"); printf("%d %d\n", iTemp, iVacumm); Visit[iTemp] = 0; iTemp = Storage[iTemp]; while(1) { printf("%d %d\n",iTemp, Visit[iTemp]); Visit[Visit[iTemp]] = Visit[iTemp]; Storage[Visit[iTemp]] = Visit[iTemp]; iTemp = Storage[iTemp]; // printf("puzzle iTemp is %d, Visit[iTemp] is %d\n", iTemp, Visit[iTemp]); if(iLast == iTemp) break; } printf("%d %d\n", iVacumm, i); Visit[i] = i; Storage[i] = i; iCycle = 0; } else { // printf("link\n"); iTemp = Storage[iTemp]; while(1) { printf("%d %d\n", iTemp, Visit[iTemp]); Visit[Visit[iTemp]] = Visit[iTemp]; Storage[Visit[iTemp]] = Visit[iTemp]; if(iTemp == i) break; iTemp = Storage[iTemp]; } printf("%d %d\n", Storage[i], i); Visit[Storage[i]] = 0; iVacumm = Storage[i]; Visit[i] = i; Storage[i] = i; iCycle = 0; } } } } if(0 == iMove) printf("No optimization needed\n"); // printfTest(); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator