當前位置:首頁 » 編程語言 » c語言演算法代碼下載
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言演算法代碼下載

發布時間: 2023-02-15 11:12:22

① 求 演算法:c語言實現 的PDF

C 演算法、數據、指針等書籍PDF。

  • 鏈接:https://pan..com/s/1VcBvSpXCThxrPDEZtD_9mw

  • 密碼:mnep

② 數獨 演算法 C語言 代碼

一、步驟:
1.對每一個空格,根據規則推斷它可能填入的數字,並存儲它的所有可能值;
2.根據可能值的個數,確定填寫的順序。比如說,有些空格只有一種可能,那必然是正確的結果,首先填入。
3.將所有隻有一種可能的空格填寫完畢以後,回到步驟1,重新確定剩下空格的可能值;
4.當沒有隻有一種可能的空格時(即每個空格都有兩種以上可能),按照可能值個數從小到大的順序,使用深度(廣度)優先搜索,完成剩下空格。

二、常式:

#include<windows.h>
#include<stdio.h>
#include<time.h>

charsd[81];
boolisok=false;

//顯示數獨
voidshow()
{
if(isok)puts("求解完成");
elseputs("初始化完成");

for(inti=0;i<81;i++)
{
putchar(sd[i]+'0');
if((i+1)%9==0)putchar(' ');
}
putchar(' ');
}

//讀取數獨
boolInit()
{
FILE*fp=fopen("in.txt","rb");
if(fp==NULL)returnfalse;
fread(sd,81,1,fp);
fclose(fp);
for(inti=0;i<81;i++)
{
if(sd[i]>='1'&&sd[i]<='9')sd[i]-='0';
elsesd[i]=0;
}
show();
returntrue;
}

//遞歸解決數獨
voidforce(intk)
{
if(isok)return;
if(!sd[k])
{
for(intm=1;m<=9;m++)
{
boolmm=true;
for(intn=0;n<9;n++)
{
if((m==sd[k/27*27+(k%9/3)*3+n+n/3*6])||(m==sd[9*n+k%9])||(m==sd[k/9*9+n]))
{
mm=false;
break;
}
}
if(mm)
{
sd[k]=m;
if(k==80)
{
isok=true;
show();
return;
}
force(k+1);
}
}
sd[k]=0;
}
else
{
if(k==80)
{
isok=true;
show();
return;
}
force(k+1);
}
}

intmain()
{
system("CLS");
if(Init())
{
doublestart=clock();
force(0);
printf("耗時%.0fms",clock()-start);
}
elseputs("初始化錯誤");
getchar();
}

③ 求《妙趣橫生的演算法(C語言實現第2版)》全文免費下載百度網盤資源,謝謝~

《妙趣橫生的演算法(C語言實現第2版)》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1CdeYYmFNRuNn8QwWP35gzA

?pwd=namn 提取碼: namn
簡介:《妙趣橫生的演算法(C語言實現 第2版)》是深受廣大讀者好評的《妙趣橫生的演算法(C語言實現)》一書的全新升級版。本書在第1版的基礎上對原書內容做了大量的調整和補充,並將書中的實例代碼在Visual Studio 2010環境下重新編譯通過,以適應當前技術的發展和閱讀需求。本書內容涵蓋了演算法入門的必備基礎知識和大量的趣味演算法題、面試題和ACM競賽題等。通過學習本書內容,可以開闊讀者的視野,幫助讀者理解演算法,提高編程興趣和能力,並提高C語言編程能力,還可以讓讀者了解IT面試中的常見演算法題及編程競賽中的相關知識。另外,本書提供了5.5小時配套教學視頻和實例源代碼,以提高讀者的學習效率。

④ C語言演算法問題,求解大佬解決,給出代碼

#include "stdafx.h"
#include <stdio.h>

//定義矩陣大小
#define ROWCNT 3 //行
#define COLCNT 4 //列

typedef struct{
int row; //行,-1表表示未定義,0表示第一行
int col; //列,-1表表示未定義,0表示第一列
int val; //值
} Elem;

extern Elem A[ROWCNT*COLCNT];
extern Elem B[ROWCNT*COLCNT];
extern Elem Sum[ROWCNT*COLCNT];

void input(Elem *Data){
int row,col,val;
int cnt=0;
//先對數組初始化
for(cnt=0;cnt<ROWCNT*COLCNT;cnt++){
Data[cnt].row=-1;
Data[cnt].col=-1;
Data[cnt].val=0;
}

cnt=0;
do{
scanf("%d %d %d",&row,&col,&val);
if (row>=0){

Data->row=row;
Data->col=col;
Data->val=val;
Data++;//指針後移到下一個元素
cnt++;
}
}while((row>=0)&&(cnt<ROWCNT*COLCNT));
}

int Find(Elem *Data,int row,int col){
int result=0;
while(Data->row>=0){
if ((Data->row==row)&&(Data->col==col)){
result=Data->val;
break;
}
Data++;
}
return(result);
}

void ShowMatrix(Elem *A){
int i,j;
for(i=0;i<ROWCNT;i++){
for(j=0;j<COLCNT;j++){
printf("%d ",Find(A,i,j));
}
printf("\n");
}
}

void AddMatric(Elem *DataA,Elem *DataB,Elem *DataSum){
int i,j,k;
for(i=0;i<ROWCNT;i++){
for(j=0;j<COLCNT;j++){
k=Find(DataA,i,j)+Find(DataB,i,j);
if(k!=0){
DataSum->row=i;
DataSum->col=j;
DataSum->val=k;
DataSum++;
}
}
}
}

int main(int argc, char* argv[]){
printf("Input Matrix A \n");
printf("Format: Row Col Value\n");
printf("when Row=-1 to end\n");
input(A);
printf("---Matrix A is ----\n");
ShowMatrix(A);

printf("\nInput Matrix B \n");
printf("Format: Row Col Value\n");
printf("when Row=-1 to end\n");
input(B);
printf("---Matrix B is ----\n");
ShowMatrix(B);

AddMatric(A,B,Sum);

printf("---Matrix Sum is ----\n");

ShowMatrix(Sum);

scanf("%d",&i);//等待輸入一個數字,方便在調試時觀察結果,否則會運行完成直接退出,不容易看到輸出
return 0;
}

⑤ 求"擲色子"的C語言演算法,或代碼...

是「擲骰子」吧?!!這是擲骰子的程序:題目是這樣子的:編寫一個模擬擲骰子的程序,每個骰子從1-6,所以兩個骰子組合數從2-12,隨機投擲10000次,列印所有組合出現的概率!
#include<iostream.h>
#include<time.h>
#include<stdlib.h>
void
main()
{
int
i=0;
float
a[13]={0};
srand((unsigned)time(null));
int
num1=0,num2=0;
for(i=1;i<=10000;i++)
{
num1=rand()%6+1;
num2=rand()%6+1;
a[num1+num2]++;
a[0]++;
}
for(i=2;i<=12;i++)
{
cout<<i<<'
'<<'
';
cout<<(a[i]/a[0])*100<<'%';
cout<<endl;
}
}

⑥ 求c語言 演算法 求大神的代碼

說白了這道題是數學題,首先要知道位數越多,值越大,那麼也就是說在兩個加號之間的位數越小,值就越小。
假設串的長度為size
那麼1:如果M+1被串的長度整除,這個最簡單,直接把這個串平分分成M+1分,在中間加入+號,也就是在size/(M+1)+(size/(M+1)+1)*i, i=0,1,2...處插入加號
但是不是所有的M+1都能被size整除,在不能被整除的情況下,先算出size/(M+1)的值,假設等於m1,再算出size%M的值,假設等於m2.這時候這個算式得到一個值,這種情況初始就是把加號加在m1+(m1+1)*i處,
for(j=0,j<m2,++j)
{
找出最小的一個數,將該數右邊的加號依次右移一位}
大致邏輯應該是這樣的吧