Example #1
0
void problem024(char arr[], int size, int max) {
    char tmp_arr[size], swap;
    int i, k, j, tmpLen, num = 1;

    k = find_k(arr, size);
    while (k != -1) {
        if (num == max) {
            break;
        }

        i = find_i(arr, k, size);
        swap = arr[i];
        arr[i] = arr[k];
        arr[k] = swap;

        tmpLen = size - k - 1;
        memcpy(tmp_arr, arr + (k + 1), tmpLen);

        // reverse
        for (j=0; j < tmpLen / 2; j++) {
            swap = tmp_arr[j];
            tmp_arr[j] = tmp_arr[tmpLen - j - 1];
            tmp_arr[tmpLen - j - 1] = swap;
        }

        memcpy(arr + (k + 1), tmp_arr, tmpLen);
        k = find_k(arr, size);

        num++;
    }

    //return arr;
}
Example #2
0
File: 8-16.c Project: cvecve147/C-
int main (void)
{
	int sum;
	
	printf("find_k(19)=%d\n\n",find_k(19));
	printf("find_k(25)=%d\n\n",find_k(25));
	printf("find_k(70)=%d\n\n",find_k(70));
	
	
	system("pause");
	return 0;
}
 int find_k(vector<int> &nums, int begin, int end, int k){
     if( k<=0 || begin>end-1){
         return -1;
     }
     int position = partition(nums, begin, end);
     int left_length = position-begin;
     if(left_length== k-1){
         return nums[position];
     }
     else if(left_length > k-1){
         return find_k(nums, begin, position, k);
     }
     else{
         return find_k(nums, position+1, end, k-left_length-1);
     }
 }
Example #4
0
void find_k(int *array, int start, int end, int k) //由上面的快速排序来改造
{
    int i, j;

    if (start > end)
        return;
    j = start - 1;
    for (i = start; i < end; i++)
    {
        if (array[i] < array[end])
        {
            swap(&array[++j], &array[i]);
        }
    }
    swap(&array[++j], &array[end]);
    if (j == k-1)
        return;
    else if (j > k-1)
        find_k(array, start, j-1, k);
    else
        find_k(array, j+1, end, k-j-1);
}
Example #5
0
/*-------------------------------------------------------------------------*/
void main ()
{
   clrscr();
   k=find_k();
   printf("koren yravneniya : %f\n",k);
   getch();
   printf("Strelba:\n");
   strelba();
   getch();
   graphik();
   clrscr();
   findq();
   getch();
   printrez();
}
Example #6
0
double		sphere_equation(t_ray *ray, t_obj *obj)
{
  int		i;
  double	values[4];

  i = 0;
  init_tab(values, 0, 4);
  while (i < 3)
    {
      values[0] += ray->v[i] * ray->v[i];
      values[1] += ray->v[i] * ray->eye[i];
      values[2] += ray->eye[i] * ray->eye[i];
      ++i;
    }
  values[1] *= 2;
  values[2] -= (obj->rayon * obj->rayon);
  values[3] = (values[1] * values[1]) - (4 * values[0] * values[2]);
  return (find_k(values[3], values[0], values[1]));
}
Example #7
0
int main()
{
    //freopen("/home/lintingbin/test.txt", "r", stdin);
    int i, n, k;
    
    while (scanf("%d%d", &n, &k) != EOF)
    {
        for (i = 0; i < n; i++)
            scanf("%d", &input[i]);
        find_k(input, 0, n-1, k+1);
        quick_sort(input, 0, k-1);
        for (i = 0; i < k - 1; i++)
            printf("%d ", input[i]);
        if (k > 0)
            printf("%d", input[k-1]);
        printf("\n");
    }

    return 0;
}
int main(int argc, char const *argv[])
{
    int iterations = 0;
    scanf("%d",&iterations);

    int menus[] = {1,2,4,8,16,32,64,128,256,512,1024,2048};

    int count = 0;
    int num = 0;
    int k = 0;

    for (int i=0; i<iterations; ++i)
    {
        count = 0;
        scanf("%d",&num);

        for (int j=0; j<12; ++j) 
        {
            if (menus[j]==num)
            {
                count = 1;        
            }
        }
        if (count!=0)
        {
            printf("%d\n",count);
            continue;
        }
        while (num!=0) 
        {
            k = find_k(num,menus);
            num -= k;
            count++;             
        }
        printf("%d\n",count);
    }

    return 0;
}
value_type
Stokhos::Sparse3Tensor<ordinal_type, value_type>::
getValue(ordinal_type i, ordinal_type j, ordinal_type k) const
{
#ifdef STOKHOS_DEBUG
  TEUCHOS_TEST_FOR_EXCEPTION(fill_completed == false, std::logic_error,
		     "You must call fillComplete() before calling getValue()!");
#endif

  k_iterator k_it = find_k(k);
  if (k_it == k_end())
    return value_type(0);

  kj_iterator j_it = find_j(k_it, j);
  if (j_it == j_end(k_it))
    return value_type(0);

  kji_iterator i_it = find_i(j_it, i);
  if (i_it == i_end(j_it))
    return value_type(0);

  return i_it.value();
}
 int findKthLargest(vector<int> &nums, int k) {
     return find_k(nums, 0, nums.size(), k);
 }
int main(int argc, char *argv[])
{
	int i, j, l;
	int **matrix;               // N x N matrix
	Node *lpart, *rpart;        // left and right partition
	int p, r, c;
	int k = 0, k_temp;
	float res;
	int res1;
	int *consistency;
	struct timeval tv1,tv2; 
    struct timezone tzone;
    long elapsed_utime;    /* elapsed time in microseconds */
    long elapsed_mtime;    /* elapsed time in milliseconds */
    long elapsed_seconds;  /* diff between seconds counter */
    long elapsed_useconds; /* diff between microseconds counter */
		
	if( argc != 4 ) /* checks the inputs from the command line */
	{
		printf("Invalid input!! Please try again.\n");
		return 0;
	}
		
	N = atoi(argv[1]); // get N (NxN partially-defective crossbar)
	P = atoi(argv[2]); // get P (defect rate)
	T = atoi(argv[3]); // get number of samples
   
	matrix = (int **)malloc(N*sizeof(int*));
	for(i = 0; i < N; i++)
		matrix[i]=(int *)calloc(N, sizeof(int)); // all values are set to zero
	
	lpart = (Node *)malloc(N*sizeof(Node));
	rpart = (Node *)malloc(N*sizeof(Node));
	
	consistency = (int *)calloc(N+1, sizeof(int));
   
	srand( time(NULL) );
	p = faults();
    
    gettimeofday(&tv1, NULL); 
	for(l = 0; l < T; l++) 
	{
		for(i = 0; i < N; i++)
		{
			for(j = 0; j < N; j++)
				matrix[i][j] = 0;
		}
        
		/* random faults */
    		for(i = 0; i < p; i++)
		{
			r = rand()%N;
			c = rand()%N;
       	
			if(matrix[r][c] == 0)
				matrix[r][c] = 1;
			else
				i--;
		}
		
		construct_partitions(lpart, rpart, matrix);
  
		k_temp = find_k(lpart, rpart, matrix, N, N);
		consistency[k_temp]++;
		k += k_temp;
	}
	
	gettimeofday(&tv2, &tzone);
	elapsed_seconds  = tv2.tv_sec  - tv1.tv_sec;
    elapsed_useconds = tv2.tv_usec - tv1.tv_usec;

    //printf("Elapsed time = %f seconds + %f microseconds\n",
    //        (double)elapsed_seconds/(double)T, (double)elapsed_useconds/(double)T);

    elapsed_utime = (elapsed_seconds) * 1000000 + elapsed_useconds;
    //lapsed_mtime = ((elapsed_seconds) * 1000 + elapsed_useconds/1000.0) + 0.5;
    printf("%f ",(double)elapsed_utime/(double)T);
    //printf("Elapsed time = %f microseconds\n", (double)elapsed_utime/(double)T);
    //printf("Elapsed time = %f milliseconds\n", (double)elapsed_mtime/(double)T);
	
	res = (float)k/(float)T;
	
	res1 = (int)res;
		if((res - (float)res1 >= 0.5))
			res1++;
         
	//printf("K = %d (%.2f %%), #crosspoints = %d (%.2f %%)\n", res1, (double)res1*100/(double)N, res1*res1, (double)(res1*res1*100)/(double)(N*N) );
	printf("%d",res1);

	for(i = 0; i < N; i++)
	      if(consistency[i])
              printf(" %d %d",i, consistency[i]);
             
	free(consistency);
	free(lpart);
	free(rpart);
	for(i = 0; i < N; i++)
		free(matrix[i]);
	free(matrix);
	//system("PAUSE");
	
	return 0;
}