コード例 #1
0
ファイル: f.cpp プロジェクト: hphp/Algorithm
int main()
{
	int test;
	scanf("%d",&test);
	for(int tt=1;tt<=test;tt++)
	{
		scanf("%d",&n);
		bs[0] = 0;
		mbc[0] = MAX;
		for(int i=1;i<=n;i++)
		{
			scanf("%d",&a[i]);
			bs[i] = bs[i-1] + a[i];
			mbc[i] = Min(mbc[i-1],bs[i]);
		}
		as[n+1] = 0;
		mac[n+1] = MAX;
		for(int i=n;i>0;i--)
		{
			as[i] = as[i+1] + a[i];
//			mac[i] = Min(mac[i+1],as[i]);
		}
		
		makeQueue();
		
		/*for(int i=1;i<=n;i++)
		{
			printf("%d ",mbc[i]);
		}
		printf("\n");*/
		
		int cnt = 0;
		if(mbc[n] > 0)
			cnt ++;
		for(int i=2;i<=n;i++)
		{
			if(mac[i] <= 0)
				continue;
/*			if(mbc[i-1] <= 0)
				continue;*/
			if(as[i] + mbc[i-1] <= 0)
				continue;
			cnt ++;
		}
		printf("Case %d: %d\n",tt,cnt);
	}

	return 0;
	
}
コード例 #2
0
ファイル: maplib.c プロジェクト: k-i-k-ichi/robo
// Build a linked list of nodes that forms the shortest path
void breadthFirstSearch(struct node* startnode){
    struct queue* queue = makeQueue();
    Enqueue(queue, startnode);
    startnode->discovered = 1;
    while (QueueIsEmpty(queue) != 1){
        struct node* tempnode = Dequeue(queue);
        int i;
        if (tempnode->name == 16)
            break;
        for (i = 0; i < 4; i++){
            if (tempnode->adjacent[i] != 0 && tempnode->adjacent[i]->discovered != 1){
                Enqueue(queue, tempnode->adjacent[i]);
                tempnode->adjacent[i]->parent = tempnode; // Linked list is reversed !
                tempnode->adjacent[i]->discovered = 1;
            }
        }
    }
}