| Ferrous Moon http://www.ferrousmoon.com:80/forums/ |
|
| VDPIN Solver http://www.ferrousmoon.com:80/forums/viewtopic.php?f=52&t=1673 |
Page 1 of 1 |
| Author: | Coder [Mon Feb 16, 2009 12:50 am ] |
| Post subject: | VDPIN Solver |
The C++ SourceCode: #include <iostream> #include <memory.h> #include <cstdlib> #include <typeinfo.h> using namespace std; #define SIZE 5 #define ROTATE 3 template <class T> void click(T &data, const int i, const int j, const int count){ data[j] = (data[j] + count) % ROTATE; if (j > 0) data[j - 1] = (data[j - 1] + count) % ROTATE; if (j < SIZE - 1) data[j + 1] = (data[j + 1] + count) % ROTATE; if (i < SIZE - 1) data[i + 1][j] = (data[i + 1][j] + count) % ROTATE; } template <class T> bool check(T &data){ for (int i = 1; i < SIZE; i++) for (int j = 0; j < SIZE; j++) click(data, i, j, ROTATE - data[j]); for (int j = 0; j < SIZE; j++) if (data[SIZE - 1][j] != 0) return false; return true; } int main(){ int status[SIZE][SIZE]; int test[SIZE][SIZE]; for (int i = 0; i < SIZE; i++) for (int j = 0; j < SIZE; j++) cin>>status[j]; int searchSum = 1; for (int i = 0; i < SIZE; i++) searchSum *= ROTATE; int temp; for (int i = 0; i < searchSum; i++){ memcpy(test, status, sizeof(status)); temp = i; for (int j = 0; j < SIZE; j++){ click(test, 0, j, temp % ROTATE); temp /= ROTATE; } if (check(test)){ cout<<"The answer is:"<<endl; temp = i; for (int j = 0; j < SIZE; j++){ cout<<(temp % ROTATE)<<" "; temp /= ROTATE; } cout<<endl; break; } } system("pause"); return 0; } Input is a 5 * 5Matrix 0 Means Blue 1 Means Green 2 Means Red Such as 0 1 2 0 0 1 2 0 0 1 1 1 1 1 1 2 2 2 2 2 0 0 0 0 0 Output is a 1 * 5Vector, Means the number to click in the first row. Such as 2 1 0 0 0 Means the top left need to click twice then is once The rows below first row is related with the row just up them. |
|
| Author: | master2004134 [Mon Feb 16, 2009 4:30 pm ] |
| Post subject: | Re: VDPIN Solver |
*drool* |
|
| Page 1 of 1 | All times are UTC-05:00 |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|