大佬们,怎样实现把一个一维数组的全部赋给另一个一维数组的第i个
类似 array1=[2,2,2,2],array2=[2,3,3],array3[3.5],变成array4=[[2,2,2,2],[2,3,3],[3,5]]
2021-10-05 13:01
程序代码:#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i, len;
char array[4][4] = {
{2, 2, 2, 2},
{2, 3, 3, 0},
{3, 5, 0, 0},
{0}
};
#define DEF_STACK_OF
DEF_STACK_OF char sof[10] = {0xcc};
enum ar{ar1 = 0, ar2, ar3, ar4};
#define ar_sz(_ar) sizeof(array[_ar])
#define ar_le(_ar) strlen(array[_ar])
//memcpy ar1
memcpy(array[ar4], array[ar1], len = ar_sz(ar1));
//strcpy ar2
strcpy(array[ar4] + len, array[ar2]); len += ar_le(ar2);
//strcpy ar3
/* write your code here */
for (i = 0; i < len; i++) {
printf("array[ar4][%d] = %d, sof[%d] = %d\n",
i, array[ar4][i], i, sof[i]);
}
return 0;
}[此贴子已经被作者于2021-10-5 14:00编辑过]
2021-10-05 13:41
程序代码:
#include <stdio.h>
int main(int argc, char *argv[])
{
int array1[4]={2,2,2,2},
array2[4]={2,3,3},
array3[4]={3,5};//这3个数组不等长的话输出的时候需要做长度判断
int *array4[3];
array4[0]=array1;
array4[1]=array2;
array4[2]=array3;
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
printf("%d ", array4[i][j]);
printf("\n");
}
return 0;
}
2021-10-05 15:16
2021-10-05 15:57
2021-10-05 15:59


程序代码:#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i, len;
char array[4][4] = {
{2, 2, 2, 2},
{2, 3, 3, 0},
{3, 5, 0, 0},
{0}
};
#define DEF_STACK_OF
DEF_STACK_OF char sof[10];
enum ar{ar1 = 0, ar2, ar3, ar4};
#define ar_sz(_ar) sizeof(array[_ar])
#define ar_le(_ar) strlen(array[_ar])
//memcpy ar1
memcpy(array[ar4], array[ar1], len = ar_sz(ar1));
//strcpy ar2
strcpy(array[ar4] + len, array[ar2]); len += ar_le(ar2);
//strcpy ar3
strcpy(array[ar4] + len, array[ar3]); len += ar_le(ar3);
//output by using stack overflow feature[debug-only]
for (i = 0; i < len; i++) {
printf("sof[%d] = %d\n", i, sof[i - 4]);
}
return 0;
}[此贴子已经被作者于2021-10-5 16:15编辑过]
2021-10-05 16:14
2021-10-08 09:26
2021-10-10 21:20
程序代码:#include <stdio.h>
#include <stdlib.h>
int** combinationSum( int* candidates, int candidatesSize, int target, int* returnSize, int** returnColumnSizes )
{
int** retval = malloc( 150*sizeof(int*) ); // 对于给定的输入,保证和为 target 的唯一组合数少于 150 个
*returnColumnSizes = malloc( 150*sizeof(int) );
*returnSize = 0;
int buf[30*200+1]; // 1<=candidates.length<=30, 1<=candidates[i]<=200, 1<=target<=500
int bufSize = 0;
int sum = 0;
while( 1 )
{
//for( int i=0; i!=bufSize; ++i )
// printf( "%d%c", candidates[buf[i]], " \n"[i+1==bufSize] );
if( sum == target )
{
(*returnColumnSizes)[*returnSize] = bufSize;
retval[*returnSize] = malloc( bufSize*sizeof(int) );
for( int i=0; i!=bufSize; ++i )
retval[*returnSize][i] = candidates[buf[i]];
++*returnSize;
}
if( sum < target )
{
int last = bufSize==0 ? 0 : buf[bufSize-1];
buf[bufSize++] = last;
sum += candidates[last];
}
else
{
for( ; bufSize!=0 && buf[bufSize-1]==candidatesSize-1; --bufSize )
sum -= candidates[candidatesSize-1];
if( bufSize == 0 )
break;
sum += -candidates[buf[bufSize-1]] + candidates[buf[bufSize-1]+1];
++buf[bufSize-1];
}
}
return retval;
}
int main( void )
{
int candidates[] = { 2,3,6,7 };
int candidatesSize = sizeof(candidates)/sizeof(*candidates);
int target = 7;
int returnSize;
int* returnColumnSizes;
int** retval = combinationSum( candidates, candidatesSize, target, &returnSize, &returnColumnSizes );
for( int i=0; i!=returnSize; ++i )
{
for( int j=0; j!=returnColumnSizes[i]; ++j )
printf( "%d%c", retval[i][j], ",\n"[j+1==returnColumnSizes[i]] );
}
}
2021-10-11 10:41
,在那天后我就没怎么逛坛了,瞎忙于练车和期末准备去了,现在捡起来好好学习,今天遇到一个JAVA的问题实在没找到解决办法,来看看有没有大神帮忙看看。
2021-12-16 14:26