droidxlabs
BAN USERCREATE TABLE Object (obj_id int key, obj_name VARCHAR(10));
CREATE TABLE Attribute (att_id int key, att_name VARCHAR(10));
CREATE TABLE ObjectAttributeMapping (objAtt_id int key, obj_id int, att_id int, att_value VARCHAR(10));
INSERT INTO Object Values (1, 'cube'), (2, 'square'), (3, 'matrix');
INSERT INTO Attribute VALUES (1, 'color'), (2, 'height'), (3, 'length'), (4, 'width');
INSERT INTO ObjectAttributeMapping Values (1, 1, 1, 'red'), (2, 1, 2, '10'), (3, 1, 3, '12'), (4, 1, 4, '5'), (5, 2, 1, 'green'), (6, 2, 2, '6'), (7, 3, 3, '5'), (8, 3, 4, '9');
SELECT O.obj_id, O.obj_name, (SELECT OAc.att_value FROM Object Oc NATURAL JOIN ObjectAttributeMapping OAc NATURAL JOIN Attribute Ac WHERE Ac.att_name='color' AND Oc.obj_id=O.obj_id) color, (SELECT OAc.att_value FROM Object Oc NATURAL JOIN ObjectAttributeMapping OAc NATURAL JOIN Attribute Ac WHERE Ac.att_name='height' AND Oc.obj_id=O.obj_id) height, (SELECT OAc.att_value FROM Object Oc NATURAL JOIN ObjectAttributeMapping OAc NATURAL JOIN Attribute Ac WHERE Ac.att_name='length' AND Oc.obj_id=O.obj_id) length, (SELECT OAc.att_value FROM Object Oc NATURAL JOIN ObjectAttributeMapping OAc NATURAL JOIN Attribute Ac WHERE Ac.att_name='width' AND Oc.obj_id=O.obj_id) width FROM Object O;
import java.io.*;
import java.util.*;
class Solution {
static String source = "5 7"+ "\n"
+ "0 0 1 0 0 1 0" + "\n"
+ "1 0 1 0 1 0 1" + "\n"
+ "1 1 1 1 1 1 1" + "\n"
+ "0 0 1 0 0 0 0" + "\n"
+ "0 0 0 0 0 0 0";
private int M, N;
private int rootx, rooty;
private int[][] matrix;
public Solution(int M, int N) {
this.M = M;
this.N = N;
this.matrix = new int[M][N];
}
public static void main(String[] args) {
Scanner in = new Scanner(source);
int M = in.nextInt();
int N = in.nextInt();
System.out.println(M + " " + N);
Solution s = new Solution(M, N);
for(int x = 0; x < M; x++) {
for(int y = 0; y < N; y++) {
s.matrix[x][y] = in.nextInt();
System.out.print(s.matrix[x][y] + " ");
}
System.out.println("");
}
int size = s.run();
System.out.println("Max length of "+size+" starting from "+s.rootx+" "+s.rooty);
}
/*
*/
public boolean isValid(int i, int j) {
if(i<0 || i>=M || j<0 || j>=N) return false;
if(matrix[i][j] == 0) return false;
return true;
}
/**/
public int run() {
int max = 0;
for(int i =1; i<M; i++) {
for(int j = 1; j<N; j++) {
if(isValid(i, j) == false) continue;
int length = 0;
while(length < Math.min(i, j)) {
length++;
if(!(isValid(i+length, j) || isValid(i, j+length) || isValid(i-length, j) || isValid(i, j-length)))
break;
}
if(length > max) {
max = length;
rootx = i;
rooty = j;
}
}
}
return max;
}
}
import java.io.*;
import java.util.*;
import java.awt.Point;
class Solution {
static String source = "3 10" + "\n" + "3" + "\n" + "1 2" + "\n" + "1 5" + "\n" + "1 8" + "\n" + "0 0" + "\n" + "1 7";
private int M;
private int N;
private List<Point> hurdles;
private int si, sj;
private int ei, ej;
public Solution(int nbHurdles) {
this.hurdles = new ArrayList<Point>(nbHurdles);
}
public static void main(String[] args) {
Scanner in = new Scanner(source);
int M = in.nextInt();
int N = in.nextInt();
System.out.println(M + " " + N);
int nbHurdles = in.nextInt();
System.out.println("Hurdles " + nbHurdles);
Solution s = new Solution(nbHurdles);
s.M = M; s.N = N;
for(int x = 0; x < nbHurdles; x++) {
int i = in.nextInt();
int j = in.nextInt();
s.hurdles.add(new Point(i, j));
System.out.println(i + " " + j);
}
s.si = in.nextInt();
s.sj = in.nextInt();
System.out.println("Start from " + s.si + " " + s.sj);
s.ei = in.nextInt();
s.ej = in.nextInt();
System.out.println("End at " + s.ei + " " + s.ej);
int size = s.run();
System.out.println("Max length is "+size);
}
/*
*/
public boolean isValid(List<Point> points, int i, int j) {
if(i<0 || i>=this.M || j<0 || j>=this.N)
return false;
for(Point p: points) {
if(p.x==i && p.y==j) return false;
}
return true;
}
/**/
public int run() {
if(si==ei && sj==ej)
return -1;
if(!(isValid(this.hurdles, si, sj) && isValid(this.hurdles, ei, ej)))
return -1;
return visitChildren(new ArrayList<Point>(), this.si, this.sj);
}
public int visitChildren(List<Point> path, int i, int j) {
if(isValid(this.hurdles, i, j)==false) {
return -1;
}
if(i==this.ei && j==this.ej) {
return path.size();
}
path.add(new Point(i, j));
int max = 0;
if(isValid(path, i+1, j)) {
max = Math.max(max, visitChildren(new ArrayList<Point>(path), i+1, j));
};
if(isValid(path, i, j+1)) {
max = Math.max(max, visitChildren(new ArrayList<Point>(path), i, j+1));
}
if(isValid(path, i-1, j)) {
max = Math.max(max, visitChildren(new ArrayList<Point>(path), i-1, j));
}
if(isValid(path, i, j-1)) {
max = Math.max(max, visitChildren(new ArrayList<Point>(path), i, j-1));
}
return max;
}
}
- droidxlabs November 29, 2016