楼主你好。
代码如下:
#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
//与上面相同
}
}
}