编程练习
之乎者也_
这个作者很懒,什么都没留下…
展开
-
贪吃蛇游戏(C语言)(在Dev c++、vc中运行通过)
贪吃蛇游戏(C语言)在大一计算机实训时写的,其中较难理解的应该是句柄,需要自己网上查找资料 以下是代码片段:#include<stdio.h>#include<conio.h>#include<windows.h>#include<time.h>#define framex 5#define framey 5#define wide 20#define high 20int i,j原创 2016-12-26 22:40:29 · 34352 阅读 · 14 评论 -
出现次数最多的整数
问题描述编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。 输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。 输出格式:输出只原创 2017-03-27 16:19:52 · 621 阅读 · 3 评论 -
最长上升子序列
问题:给出n个数,求出其最长上升子序列的长度(不要求子序列连续),比如n=5,5个数是4,6,5,7,3 其最长下降子序列就是4,6,7,长度为3。思路将问题分解为求以a[i] ((i=1,2……n))为终点的最长上升子序列,当n个子问题全部求解完成后,n个子问题的解的最大值就是该问题的解。算法使用max[]保存各个终点的最长上升子序列长度(即为各个子问题的解)。max[]的值,就是在a[i]左边,原创 2017-03-11 16:17:40 · 243 阅读 · 0 评论 -
全排列的递归算法
分析对 1 2 3 进行全排列: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 共有六种情况,可以发现:对1 2 3 的全排列可以分成以1为首的全排列、以2为首的全排列、以3为首的全排列三个子问题,而每个子问题又可以分成以其余两个数为首的全排列。把问题转化为规模缩小了的同类问题的子问题,这样一来我们就可以通过递归来解决这个问题了。代码#include<stdi原创 2017-03-12 11:50:46 · 324 阅读 · 0 评论 -
八皇后问题(递归)
在n*n的方格棋盘上,放置n个皇后,要求每个皇后不同行,不同列,不同对角线。 解:对于皇后问题,每一行只能放一个皇后,用(k,q[k]) (1<=k<=n)表示皇后的位置,设place(k,n)表示已在前面放置好了第1~k-1个皇后,用于放置第k~n个皇后,则place(k+1,n)表示需要放置第k+1~n个皇后,所以place(k,n)是“大问题”,place(k+1,n)是“小问题”,假设p原创 2017-03-01 15:41:53 · 670 阅读 · 0 评论 -
八皇后改DFS
逐行判断,在当前行放置皇后之后递归进入下一行#include<stdio.h>int queen[9]={0};int count=1;int base[8][8];int max=0; int abs(int i){ if(i<0) return -i;}//输出最大解 int visit(){ int i,sum=0; for(i=1;i<9;i++){原创 2017-03-26 10:18:54 · 443 阅读 · 0 评论 -
C语言长整型相乘
思路用数组strA,strB存储数字,将两个大数对应位置(i、j)上的数相乘,乘积直接放在数组strC的第(i+j)位,待所有位置上的数都相乘后,对strC进行进位。#include<iostream>#include<cstring>using namespace std;int main(){ int strA[4000],strB[4000],strC[4000]={0};原创 2017-09-24 21:47:12 · 2866 阅读 · 0 评论 -
马踏棋盘(贪心)
描述国际象棋共有8行8列,64个单元格,无论将马放在棋盘的哪个单元格,都可以让马踏遍棋盘的每个单元格。要求编程实现马踏棋盘的过程,输出马在棋盘上走过的次序。思路使用循环逐个处理棋盘的64个单元格将当前步数写入棋盘数组中,开始探测下一步该走的位置分别测试八个方向,将可走的位置记录再next数组中对可走位置进行再探测,找出每个位置的下一步可走步数,将步数最少的可走位置作为下一步的位置(每次都将步原创 2017-10-07 10:01:09 · 1319 阅读 · 0 评论