C语言 拼数字

Python021

C语言 拼数字,第1张

楼主你好。

代码如下:

#include <stdio.h>

#include <string.h>

#include <math.h>

unsigned int getNum(char* str){//从字符串中提取出unsigned int数据。

unsigned int num=0

int i, len=strlen(str)

for(i=0i<leni++){

if(str[i]>='0'&&str[i]<='9'){

num*=10

num+=str[i]-'0'

}

}

return num

}

unsigned int getMaxFactor(unsigned int num){//获取最大因子

unsigned int i

for(i=2i<numi++){//要是追求效率,这里的上限其实可以用num/2甚至sqrt(num)代替,下面也要进行相应修改。

if(num%i==0)break

}

if(i==num)

return num

return num/i

}

void main(){

char str[100]={0}

unsigned int nums[100]={0}//100行,由于题目要求统一输入然后统一输出,因此需要一个缓冲区存储输出,其实这里可以动态分配空间,也可以重定向到文件中,我的unsigned int nums[100]只是一个例子。

int i=0,count

while(1){

gets(str)

if(strlen(str)==0)break

nums[i++]=getMaxFactor(getNum(str))

}

count=i

for(i=0i<counti++){

printf("%d\n",nums[i])

}

}

运行结果

#include<stdio.h>

#include<string.h>

#define MAX 11

bool used[MAX]={false}

int a[MAX]

int ok(int a[])

{

int i

for(i=0i<9i+=3)

{

if(a[i]+a[i+1]+a[i+2]!=15)return false

}

for(i=0i<3i++)

{

if(a[i]+a[i+3]+a[i+6]!=15)return false

}

if(a[0]+a[4]+a[8]!=15)return false

if(a[6]+a[4]+a[2]!=15)return false

return true

}

void DFS(int deep)

{

int i

if(deep==9)

{

if(ok(a))

{

puts("start")

for(i=0i<9i+=3)

{

printf("%d %d %d\n",a[i],a[i+1],a[i+2])

}

puts("end")

}

return

}

for(i=1i<10i++)

{

if(used[i])continue

used[i]=true

a[deep]=i

DFS(deep+1)

used[i]=false

}

}

int main(void)

{

DFS(0)

return 0

}

太麻烦了...

我只编了一部分

这个题实在有点野蛮

...

#include <iostream>

#include <time.h>

using namespace std

void main()

{

int array_A[]={1,3,4,7}

int array_B[]={2,5,8,10}

int array_C[]={6,11,12}

int array_D[]={1,2,9,13,14,15}

int array_M[]={0,0,0,0}//初始化结果

int *p

int i,j

i=rand()%6

array_M[0]=array_D[i]

do

{j=rand()%6}

while((i==j)||(array_D[i]+array_D[j])<4)

array_M[1]=array_D[j]

if(array_D[0]<7||array_D[1]<7)

{

if(array_D[0]>12||array_D[1]>12)

{i=rand()%3

switch(rand()%2)

{case 0:

if(i==0) array_M[2]=array_B[2]

if(i==1) array_M[2]=array_B[3]

if(i==2) array_M[2]=array_C[1]

case 1:

if(i==0) {array_M[2]=array_B[2]array_M[3]=array_B[3] }

if(i==1) {array_M[2]=array_B[3]array_M[3]=array_C[1] }

if(i==2) {array_M[2]=array_C[1]array_M[3]=array_B[2] }

// default:

//statements

// break

}

}

else if(array_D[0]<12||array_D[1]<12)

{

//8 10 11 12 选一个

//或8 10 11 12 选两个

}

else

{

//有12 或没有12

//与上面相同

}

}

}