导航:首页 > 源码编译 > 语言算法代码是什么

语言算法代码是什么

发布时间:2025-09-20 00:51:34

A. C语言24点的算法

下面是我自己写的一个程序:

我的解法是把这个问题分解成了两个子问题,首先求出4个数字的无重复全排列,放到一个数组里面,再对没一个排列情况,从头到尾穷举所有的四则运算情况。注意到除法是特殊的,我用x/y表示x除以y,用x|y表示x分之y。注意到,如果穷举的解得到-24的话,只需要把有减法的地方调换一下顺序就可以了,代码如下
/***********************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int index[4]={0,1,2,3};//used to generate subscription collection
int sub[4]; //used in p() only
float f[4]={8.0f,3.0f,3.0f,8.0f};//the 24 point numbers
float fs[24][4];//all possible permutaions of f
float tmp[4]; //used for buf
int g_number=0; //number of permutations
float RES[4];
char op[3];
void p(int idx){//求全排列的函数
if(idx==4){
for(int i=0;i<4;++i){tmp[i]=f[sub[i]];}
for(int g=0;g<g_number;++g){if(memcmp(fs[g],tmp,sizeof(float)*4)==0)return;}
for(int i=0;i<4;++i){fs[g_number][i]=f[sub[i]];}
g_number++;
return;
}
for(int i=0;i<4;++i){//make subscription collections
bool pflag=false;
for(int j=0;j<idx;++j){if(sub[j]==i)pflag=true;}
if(pflag==true)continue;
sub[idx]=index[i];
p(idx+1);
}
}
void solve(int L){//对某个排列,递归求所有四则运算的结果,找到就退出
if(L==3){
if(fabs(fabs(RES[L])-24.0f)<0.01f){
printf("Found solution,RES=%f,((%d%c%d)%c%d)%c%d\n",RES[L],
(int)f[0],op[0],
(int)f[1],op[1],
(int)f[2],op[2],
(int)f[3]);
exit(0);
}
return;
}
for(int j=0;j<5;++j){//j judges for operators
if(j==0){RES[L+1]=RES[L]+tmp[L+1];op[L]='+';solve(L+1);}
if(j==1){RES[L+1]=RES[L]-tmp[L+1];op[L]='-';solve(L+1);}
if(j==2){RES[L+1]=RES[L]*tmp[L+1];op[L]='*';solve(L+1);}
if(j==3&&tmp[L+1]!=0)
{RES[L+1]=RES[L]/tmp[L+1];op[L]='/';solve(L+1);}
if(j==4&&RES[L+1]!=0)
{RES[L+1]=tmp[L+1]/RES[L];op[L]='|';solve(L+1);}
}
}
int main(int argc,char* argv[]){//should avoid 0
f[0]=atoi(argv[1]);
f[1]=atoi(argv[2]);
f[2]=atoi(argv[3]);
f[3]=atoi(argv[4]);
p(0);
for(int i=0;i<g_number;++i){
memcpy(tmp,fs[i],sizeof(float)*4);
RES[0]=tmp[0];
for(int t=0;t<4;++t){ printf("%d,",(int)tmp[t]); }
printf("\n");
solve(0);
}
printf("Found no solution :( \n");
return 0;
}

----------编译运行,运行时的参数就是4个数字
g++ p.cpp && ./a.out 1 5 5 5
1,5,5,5,
Found solution,RES=-24.000000,((1/5)-5)*5
g++ p.cpp && ./a.out 8 3 3 8
8,3,3,8,
Found solution,RES=-24.000006,((8/3)-3)|8
上面这个解写出来就是
8
--------- = 24
3-(8/3)
主程序为了简化,省去了对输入的检查,楼主可以自己添加。

B. 求遗传算法(GA)C语言代码

.----来个例子,大家好理解..--
基于遗传算法的人工生命模拟
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
#include<math.h>
#include<time.h>
#include<string.h>
#include "graph.c"
/* 宏定义 */
#define TL1 20 /* 植物性食物限制时间 */
#define TL2 5 /* 动物性食物限制时间 */
#define NEWFOODS 3 /* 植物性食物每代生成数目 */
#define MUTATION 0.05 /* 变异概率 */
#define G_LENGTH 32 /* 个体染色体长度 */
#define MAX_POP 100 /* 个体总数的最大值 */
#define MAX_FOOD 100 /* 食物总数的最大值 */
#define MAX_WX 60 /* 虚拟环境的长度最大值 */
#define MAX_WY 32 /* 虚拟环境的宽度最大值 */
#define SX1 330 /* 虚拟环境图左上角点x坐标 */
#define SY1 40 /* 虚拟环境图左上角点y坐标 */
#define GX 360 /* 个体数进化图形窗口的左上角点X坐标 */
#define GY 257 /* 个体数进化图形窗口的左上角点Y坐标 */
#define GXR 250 /* 个体数进化图形窗口的长度 */
#define GYR 100 /* 个体数进化图形窗口的宽度 */
#define GSTEP 2 /* 个体数进化图形窗口的X方向步长 */
#define R_LIFE 0.05 /* 初期产生生物数的环境比率 */
#define R_FOOD 0.02 /* 初期产生食物数的环境比率 */
#define SL_MIN 10 /* 个体寿命最小值 */
/* 全局变量 */
unsigned char gene[MAX_POP][G_LENGTH]; /* 遗传基因 */
unsigned char iflg[MAX_POP]; /* 个体死活状态标志变量 */

C. C语言程序的算法怎么算

C语言程序的算法主要通过顺序、选择和循环三种基本结构来实现

  1. 顺序结构

    • 这是最基本的算法结构,指按照语句的顺序依次执行。在C语言中,顺序结构是最简单的执行流程,每条语句都会按照出现的顺序被执行。
  2. 选择结构

    • 选择结构用于有条件的情况,根据条件的真假来决定执行哪一段代码。在C语言中,常见的选择结构有ifelse语句和switchcase语句。
    • 例如,根据成绩的不同范围来评定等级,就可以使用ifelse语句来实现:cif { grade = 'D'} else if { grade = 'C'}// 其他条件...3. 循环结构: 循环结构用于重复执行某段代码,直到满足某个条件为止。在C语言中,循环结构有for循环、while循环和dowhile循环。 例如,计算从1到100的累加和,就可以使用for循环来实现:cint i, sum = 0;for { sum = sum + i;}

综上所述,C语言程序的算法是通过这三种基本结构的组合和嵌套来实现的。在实际编程中,根据问题的具体需求,选择合适的结构并正确地进行组合和嵌套,就可以实现复杂的算法。

D. 用c语言编写50的阶乘的算法

#include<stdio.h>
#define N 50 /*可以是任意一个数的阶乘,当然要计算机能够存的下*/

int main()
{
int a[100], l=0, i, j;
for(i=0; i<100; i++)
a[i]=0;
a[0]=1;

for(i=2; i<=N; i++)
{
for(j=0; j<=l; j++)
a[j] *= i;
l+=3;
for(j=0; j<l; j++)
if(a[j]>9)
{
a[j+1]+=a[j]/10;
a[j] %=10;
}
while(a[l]==0) l--;
}

for(i=l; i>=0; i--)
printf("%d", a[i]);
printf("\n");
}

看了 楼下两个 用int 存储 50!
感觉有点不可思议, 至少应该用double啊,用double虽然不能保证精度,但至少可以很接近结果。

3楼的 一句话:“老师说过,可以自已定义一个类型来表示更大的数。。。”

自己是可以定义,你可以定义任意类型。只不过需要你自己来实现。 50!这种问题 就相当于 大数 的操作。
网上可以下载到大树类, 支持 大数的+ - * / 开平方, 开根号,(几乎所有math里的函数)...。

E. 基本算法语言(高一数学)

这里纠正ls错误
基本算法语句符号:
=:赋值号
>、<:大于、小于
== !=:等于,不等于
>=、<=:大于等于、小于等于
abs(x):|x|(x是整数)
fabs(x): |x|(x可以是小数)
sqrt(x):x的算术平方根
[[上面三个函数需要在程序前加上#include <math.h>]]
x % y:x÷y的余数

基本算法语句:
[[注意:所有语句后面必须加分号,且语句区分大小写]]
输入语句:
scanf ("格式",变量地址);
例如: scanf ("%d",&x); 表示输入整数x
输出语句:
printf ("字符串[包括格式]",变量);
例如: printf ("x=%d\n",x); 表示输出x=,后面加变量x的值,最后换行
赋值语句:
变量=表达式;
例如y=x*x*x+24*x*x;
利用赋值语句交换a、b的值:
x=a;
a=b;
b=x;
条件语句:
if (条件) {
语句
}
或者
if (条件) {
语句1
} else {
语句2
}
还有
if (条件) {
语句1
} else if (条件2) {
语句2
} else {
语句3
}

循环语句:
while (条件) {
循环体
}
或者
do {
循环体
} while (条件);

阅读全文

与语言算法代码是什么相关的资料

热点内容
python实现http服务器端 浏览:254
锯木材算法 浏览:40
编程的算法有哪些 浏览:523
java判断类是否为空 浏览:833
程序员早餐软件 浏览:475
java程序员的工作范围 浏览:732
python最大最小 浏览:302
程序员高工资高 浏览:5
php调用函数外的变量 浏览:610
python用双重循环输出图形 浏览:228
潜伏在涨停前源码 浏览:886
算法导论原书第三版 浏览:673
江西农商线上app怎么改号码 浏览:97
vba文件夹动态目录 浏览:223
深圳单片机辅导班 浏览:81
程序员城市去向统计图 浏览:30
instagram苹果服务器地址怎么填 浏览:86
php在线阅读器 浏览:404
黑马程序员qt第5讲 浏览:733
语言算法代码是什么 浏览:136