コード例 #1
0
ファイル: download.c プロジェクト: Andreas-Krimbacher/rtklib
/* test local file -----------------------------------------------------------*/
static int test_local(gtime_t ts, gtime_t te, double ti, const char *path,
                      const char *sta, const char *dir, int *nc, int *nt,
                      FILE *fp)
{
    gtime_t time;
    char remot[1024],remot_p[1024],dir_t[1024],local[1024],str[1024];
    int stat,abort=0;
    
    for (time=ts;timediff(time,te)<=1E-3;time=timeadd(time,ti)) {
        
        sprintf(str,"%s->%s",path,local);
        
        if (showmsg(str)) {
            abort=1;
            break;
        }
        genpath(path,sta,time,0,remot);
        genpath(dir ,sta,time,0,dir_t);
        remot2local(remot,dir_t,local);
        
        stat=test_file(local);
        
        fprintf(fp," %s",stat==0?"-":(stat==1?"o":"z"));
        
        showmsg("STAT=%s",stat==0?"x":(stat==1?"o":"z"));
        
        (*nt)++; if (stat) (*nc)++;
    }
    fprintf(fp,"\n");
    return abort;
}
コード例 #2
0
ファイル: wordladder2.cpp プロジェクト: vincentpc/leetcode
 void genpath(int v1, int v2, vector<string> &vdict, vector<vector<int> >& prev, 
          vector<int> res){
     
     res.push_back(v2);
     
     if(v1 == v2){
         vector<string> result;
         for(int i = res.size() -1; i >= 0; i --){
             result.push_back(vdict[res[i]]);
         }
         results.push_back(result);
         return;
         
     }
     
     vector<int> adj = prev[v2];
     
     for(int i = 0; i < adj.size(); i ++){
         genpath(v1,adj[i],vdict,prev,res);
     }
     
     res.pop_back();
     return;
     
     
              
 }
コード例 #3
0
ファイル: tsp.c プロジェクト: rupeshparab/TSP
void main()
{
	int i, j, l, pro, sum, path[20];
	printf("Enter number of cities: ");
	scanf("%d", &n);
	init(n - 1, 1);
	for (i = 2; i <= n; i++)
	{
		temp.a[i - 2] = i;
		artemp[i - 2] = i;
		temp.sum += i;
		temp.pro *= i;
	}
	pro = temp.pro;
	sum = temp.sum;
	set[++c] = temp;
	fill(1, artemp, n - 2);
	sort();
	printf("\n");
	for (i = 0; i < n; i++)
		for (j = 0; j < n; j++)
		{
			scanf("%d", &dist[i][j]);
			if (j == 0 && i != 0)
				set[find(1, 0, i+1)].cost = dist[i][0];
		}
	for (i = n-1; i <= c; i++)
		cost(set[i].pro, set[i].sum, set[i].parent, set[i].k);
	printf("\n\n");
	for (i = 0; i <= c; i++)
	{
		printf("g(%d, ", set[i].parent);
		if (set[i].k > 0)
		{
			printf("{%d", set[i].a[0]);
			for (j = 1; j < set[i].k; j++)
				printf(", %d", set[i].a[j]);
			printf("}");
		}
		printf(") = %d	", set[i].cost);
		for (l = 0; l < set[c].k - set[i].k/2; l++)
			printf("	");
		printf("p(%d, ", set[i].parent);
		if (set[i].k > 0)
		{
			printf("{%d", set[i].a[0]);
			for (j = 1; j < set[i].k; j++)
				printf(", %d ", set[i].a[j]);
			printf("}");
		}
		printf(") = %d\n\n", set[i].min);
	}
	genpath(path);
	printf("\nDistance travelled: %d\n", set[c].cost);
	printf("\n\nPath:	1 --> ");
	for (i = 0; i < n - 1; i++)
		printf("%d --> ", path[i]);
	printf("1");
	getch();
}
コード例 #4
0
ファイル: download.c プロジェクト: Andreas-Krimbacher/rtklib
/* generate download path ----------------------------------------------------*/
static int gen_path(gtime_t time, gtime_t time_p, int seqnos, int seqnoe,
                    const url_t *url, const char *sta, const char *dir,
                    paths_t *paths)
{
    char remot[1024],remot_p[1024],dir_t[1024];
    int i;
    
    if (!*dir) dir=url->dir;
    if (!*dir) dir=".";
    
    if (strstr(url->path,"%N")) {
        for (i=seqnos;i<=seqnoe;i++) {
            genpath(url->path,sta,time,i,remot);
            genpath(dir      ,sta,time,i,dir_t);
            if (time_p.time) {
                genpath(url->path,sta,time_p,i,remot_p);
                if (!strcmp(remot_p,remot)) continue;
            }
            if (!add_path(paths,remot,dir_t)) return 0;
        }
    }
    else {
        genpath(url->path,sta,time,0,remot);
        genpath(dir      ,sta,time,0,dir_t);
        if (time_p.time) {
            genpath(url->path,sta,time_p,0,remot_p);
            if (!strcmp(remot_p,remot)) return 1;
        }
        if (!add_path(paths,remot,dir_t)) return 0;
    }
    return 1;
}
コード例 #5
0
ファイル: wordladder2.cpp プロジェクト: vincentpc/leetcode
    vector<vector<string>> findLadders(string start, string end, unordered_set<string> &dict) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        
    
        dict.insert(start);
        dict.insert(end);
         
        vector<string> vdict(dict.begin(), dict.end()); // vector dictionary: id -> word mapping in dict
        unordered_map<string, int> ids;  // index dictionary: word -> id mapping in vdict
        vector<vector<int> > prev(dict.size()); // store the previous words in BFS
        vector<int> distance(dict.size(), -1); // store the distance from start
         
        // build string - index mapping, transfer problem to graph search
        // use interger instead of string to eliminate cost of string matching
        for(int i = 0; i < vdict.size(); i++)
            ids[vdict[i]] = i;        

        
        // find the index of start and end words
        int vbeg=0, vend=0;
        while(vdict[vbeg] != start) vbeg++;
        while(vdict[vend] != end) vend++;
         
        // use queue for BFS to search path from start to end
        queue<int> que;
        que.push(vbeg);
        distance[vbeg]=0;
        
        while(!que.empty()){
            int now =  que.front();
            que.pop();
            
            if(now == vend){
                break;
            }
            
            int d = distance[now]+1;
            
            vector<int> adj;
            ids.erase(vdict[now]);
            
            for(int i = 0; i < vdict[now].size(); i ++){
                char w = vdict[now][i];
                for(char j = 'a'; j <= 'z'; j ++){
                    vdict[now][i] = j;
                    if(ids.count(vdict[now])){
                        adj.push_back(ids[vdict[now]]);
                    }
                    vdict[now][i] = w;
                }
            }
            
            
            for(int i = 0; i < adj.size(); i ++){
                if(distance[adj[i]] == -1){
                    distance[adj[i]] = d;
                    que.push(adj[i]);
                    prev[adj[i]].push_back(now);
                    
                }
                else if(distance[adj[i]] == d){
                    prev[adj[i]].push_back(now);
                }
            }
            
        }
        

        results.clear();
        path.clear();
        genpath(vbeg, vend, vdict, prev, path);
        return results;
        
    }
コード例 #6
0
ファイル: download.c プロジェクト: Andreas-Krimbacher/rtklib
/* execute local file test -----------------------------------------------------
* execute local file test
* args   : gtime_t ts,te    I   time start and end
*          double tint      I   time interval (s)
*          url_t  *urls     I   download urls
*          int    nurl      I   number of urls
*          char   **stas    I   stations
*          int    nsta      I   number of stations
*          char   *dir      I   local directory
*          int    ncol      I   number of column
*          int    datefmt   I   date format (0:year-dow,1:year-dd/mm,2:week)
*          FILE   *fp       IO  log test result file pointer
* return : status (1:ok,0:error,-1:aborted)
*-----------------------------------------------------------------------------*/
extern void dl_test(gtime_t ts, gtime_t te, double ti, const url_t *urls,
                    int nurl, char **stas, int nsta, const char *dir,
                    int ncol, int datefmt, FILE *fp)
{
    gtime_t time;
    double tow;
    char year[32],date[32],date_p[32];
    int i,j,n,m,*nc,*nt,week,flag,abort=0;
    
    if (ncol<1) ncol=1; else if (ncol>200) ncol=200;
     
    fprintf(fp,"** LOCAL DATA AVAILABILITY (%s, %s) **\n\n",
            time_str(timeget(),0),*dir?dir:"*");
    
    for (i=n=0;i<nurl;i++) {
        n+=strstr(urls[i].path,"%s")||strstr(urls[i].path,"%S")?nsta:1;
    }
    nc=imat(n,1);
    nt=imat(n,1);
    for (i=0;i<n;i++) nc[i]=nt[i]=0;
    
    for (;timediff(ts,te)<1E-3&&!abort;ts=timeadd(ts,ti*ncol)) {
        
        genpath(datefmt==0?"   %Y-":"%Y/%m/","",ts,0,year);
        if      (datefmt<=1) fprintf(fp,"%s %s",datefmt==0?"DOY ":"DATE",year);
        else                 fprintf(fp,"WEEK          ");
        *date_p='\0'; flag=0;
        
        m=datefmt==2?1:2;
        
        for (i=0;i<(ncol+m-1)/m;i++) {
            time=timeadd(ts,ti*i*m);
            if (timediff(time,te)>=1E-3) break;
            
            if (datefmt<=1) {
                genpath(datefmt==0?"%n":"%d","",time,0,date);
                fprintf(fp,"%-4s",strcmp(date,date_p)?date:"");
            }
            else {
                if (fabs(time2gpst(time,&week))<1.0) {
                    fprintf(fp,"%04d",week); flag=1;
                }
                else {
                    fprintf(fp,"%s",flag?"":"  "); flag=0;
                }
            }
            strcpy(date_p,date);
        }
        fprintf(fp,"\n");
        
        for (i=j=0;i<nurl&&!abort;i++) {
            time=timeadd(ts,ti*ncol-1.0);
            if (timediff(time,te)>=0.0) time=te;
            
            /* test local files */
            abort=test_locals(ts,time,ti,urls+i,stas,nsta,dir,nc+j,nt+j,fp);
            
            j+=strstr(urls[i].path,"%s")||strstr(urls[i].path,"%S")?nsta:1;
        }
        fprintf(fp,"\n");
    }
    fprintf(fp,"# COUNT     : FILES/TOTAL\n");
    
    for (i=j=0;i<nurl;i++) {
        j+=print_total(urls+i,stas,nsta,nc+j,nt+j,fp);
    }
    free(nc); free(nt);
}