Exemplo n.º 1
0
int main (int argc, char **argv)
{
	int i, c, bs = 1024, flags = FTW_MOUNT|FTW_PHYS|FTW_CHDIR|FTW_ACTIONRETVAL;

	log_options_t log_options = {
		.log_ident = argv[0],
		.log_dest  = LOGD_STDERR,
		.log_opts  = LOGO_PRIO|LOGO_IDENT,
	};

	log_init(&log_options);
	atexit(log_close);

	while (1) {
		c = getopt(argc, argv, "+hvcsirb:x:");

		if (c == -1)
			break;

		switch (c) {
			case 'h': usage(EXIT_SUCCESS);
			case 'v': printf("%s\n", rcsid); exit(EXIT_SUCCESS); break;

			case 'c': flags &= ~FTW_MOUNT; break;

			case 's': do_space = 1; break;
			case 'i': do_inode = 1; break;
			case 'r': do_hr = 1; break;

			case 'b': sscanf(optarg, "%d", &bs); break;
			case 'x':
				sscanf(optarg, "%" SCNu32, &xid);

				if (xid == 1 || xid > 65535)
					log_error_and_die("invalid xid: %d", xid);

				break;

			default: usage(EXIT_FAILURE);
		}
	}

	if (!do_space && !do_inode)
		log_error_and_die("no action specified: use -s and/or -i");

	if (optind == argc)
		count_path(".", flags, bs);

	else for (i = optind; i < argc; i++)
		count_path(argv[i], flags, bs);

	return errcnt > 0 ? EXIT_FAILURE : EXIT_SUCCESS;
}
int main (void)
{
    auto n = count_path(5, 5);
    std::cout << n << std::endl;
    
    std::vector<std::vector<bool>> A(5, std::vector<bool>(5, true));
    A[3][3] = false;
    auto n_with_obstacle = count_path_with_obstacle(A);
    std::cout << n_with_obstacle << std::endl;

    return 0;
}
Exemplo n.º 3
0
int looking_for_one_way_paths(void) {
    int num_of_paths = 0;
    for (int i = 0; i < size_of_column - 1; ++i)
        for (int j = 0; j < size_of_line -1; ++j)
            if (grid_transformed[i][j] == 4)
                find_path(i, j);
    for (int i = 0; i < size_of_column - 1; ++i)
        for (int j = 0; j < size_of_line -1; ++j)
            if (grid_transformed[i][j] == 3)
                find_path(i, j);      
    for (int i = 0; i < size_of_column - 1; ++i)
        for (int j = 0; j < size_of_line -1; ++j)
            if (grid_transformed[i][j] == 2) {
                count_path(i, j);
                num_of_paths++;
            }
    return num_of_paths;
}
Exemplo n.º 4
0
void count_path(int i, int j) {
    int i1, j1;
    grid_transformed[i][j] = -2;
    if (grid[i][j] == 0) {
        if (grid[i][j-1] < 4
            && grid_transformed[i][j-1] == 2
            && j-1 >= 0) {
            i1 = i;
            j1 = j-1;
            count_path(i1, j1);
        }
        if (grid[i-1][j] < 4
            && grid_transformed[i-1][j] == 2
            && i-1 >= 0) {
            i1 = i-1;
            j1 = j;
            count_path(i1, j1);
        }
        if (grid[i][j+1] < 2
            && grid_transformed[i][j+1] == 2
            && j+1 < size_of_line - 1) {
            i1 = i;
            j1 = j+1;
            count_path(i1, j1);
        }
        if ((!grid[i+1][j] || grid[i+1][j] == 2)
            && grid_transformed[i+1][j] == 2
            && i+1 < size_of_column - 1) {
            i1 = i+1;
            j1 = j;
            count_path(i1, j1);
        }
    }
    if (grid[i][j] == 1) {
        if (grid[i][j-1] < 4
            && grid_transformed[i][j-1] == 2
            && j-1 >= 0) {
            i1 = i;
            j1 = j-1;
            count_path(i1, j1);
        }
        if (grid[i][j+1] < 2
            && grid_transformed[i][j+1] == 2
            && j+1 < size_of_line - 1) {
            i1 = i;
            j1 = j+1;
            count_path(i1, j1);
        }
        if ((!grid[i+1][j] || grid[i+1][j] == 2)
            && grid_transformed[i+1][j] == 2
            && i+1 < size_of_column - 1) {
            i1 = i+1;
            j1 = j;
            count_path(i1, j1);
        }
    }
    if (grid[i][j] == 2) {
        if (grid[i-1][j] < 4
            && grid_transformed[i-1][j] == 2
            && i-1 >= 0) {
            i1 = i-1;
            j1 = j;
            count_path(i1, j1);
        }
        if (grid[i][j+1] < 2
            && grid_transformed[i][j+1] == 2
            && j+1 < size_of_line - 1) {
            i1 = i;
            j1 = j+1;
            count_path(i1, j1);
        }
        if ((!grid[i+1][j] || grid[i+1][j] == 2)
            && grid_transformed[i+1][j] == 2
            && i+1 < size_of_column - 1) {
            i1 = i+1;
            j1 = j;
            count_path(i1, j1);
        }
    }
    if (grid[i][j] == 3) {
        if (grid[i][j+1] < 2
            && grid_transformed[i][j+1] == 2
            && j+1 < size_of_line - 1) {
            i1 = i;
            j1 = j+1;
            count_path(i1, j1);
        }
        if ((!grid[i+1][j] || grid[i+1][j] == 2)
            && grid_transformed[i+1][j] == 2
            && i+1 < size_of_column - 1) {
            i1 = i+1;
            j1 = j;
            count_path(i1, j1);
        }
    }
}