#define WATER 0 #define SHIP 1 #define MISSED 1 #define HIT 2 #define SANK 3 #include #include using namespace std; int v[20][20]; int op[20][20]; int q[100][5], qi = 0, ql = 0, li = 0, lj = 0; int initx[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int inity[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int initt[] = {0, 0, 0, 0, 0, 1, 1, 1, 1, 1}; bool checkShip(int x, int y, int t, int w) { int i; if (t == 0) { if (x+w-1 > 10) return false; for (i=x;i<=x+w-1;i++) { if (v[i][y] == SHIP) return false; } } else { if (y+w-1 > 10) return false; for (i=y;i<=y+w-1;i++) { if (v[x][i] == SHIP) return false; } } return true; } void setShip(int x, int y, int t, int w) { int i; if (t == 0) { for (i=x;i<=x+w-1;i++) { v[i][y] = SHIP; } } else { for (i=y;i<=y+w-1;i++) { v[x][i] = SHIP; } } } void shuffle() { random_shuffle(initx, initx + 10); random_shuffle(inity, inity + 10); random_shuffle(initt, initt + 10); } void shuffleOp() { random_shuffle(initx, initx + 10); random_shuffle(inity, inity + 10); } void setOneShip(int w) { int i = 0, found; found = checkShip(initx[i],inity[i],initt[i],w); while (!found) { i++; if (i == 10) { shuffle(); i = 0; } found = checkShip(initx[i],inity[i],initt[i],w); } setShip(initx[i],inity[i],initt[i],w); cout<