homework-04 抓瞎
程序截图
这是基本版本截图。。。。空都没填上
四个角的话 可以留下四个单词 最后添上就行
程序思路
在一个大平面上先一个中心,然后从中心向四周填词
每次填词时,寻找一个使得矩阵最小的
代目如下
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- #define WORDLEN 12
- #define MID 15
- #define UP 0
- #define UP_R 1
- #define RIGHT 2
- #define DOWN_R 3
- #define DOWN 4
- #define DOWN_L 5
- #define LEFT 6
- #define UP_L 7
- int debug = ;
- char dictionary[][WORDLEN];
- char Word[][];
- int dictSign[]={};
- int dictSize;
- int a[];
- static void
- readDictionary(char *dictName)
- {
- FILE *h;
- char s[];
- int i;
- dictSize = ;
- h = fopen(dictName, "rt");
- fgets(s, , h);
- while (!feof(h)) {
- s[strlen(s)-] = '\0'; /* get rid of newline */
- strcpy(dictionary[dictSize++], s);
- fgets(s, , h);
- }
- printf("Dictionary size is %d\n", dictSize);
- for(i=; i<dictSize; i++){
- printf("%s\n",dictionary[i]);
- }
- }
- int getMax(){
- int max=,which=;
- int all=;
- for(int i=; i<dictSize; i++){
- if(dictSign[i] == )
- continue;
- int len = strlen(dictionary[i]);
- if(max < len){
- max = len;
- which = i;
- all = ;
- dictSign[i] = ;
- }
- }
- if(all == )
- return -;
- return which;
- }
- bool input(int x,int y,char *s,int direction){
- int len = strlen(s);
- switch(direction){
- case UP :
- for(int i=; i<len; i++){
- if(s[i] != Word[x-i][y] && Word[x-i][y] != )
- return false;
- }
- for(int i=; i<len; i++)
- Word[x-i][y]=s[i];
- break;
- case UP_R:
- for(int i=; i<len; i++){
- if(s[i] != Word[x-i][y+i] && Word[x-i][y+i] != )
- return false;
- }
- for(int i=; i<len; i++)
- Word[x-i][y+i]=s[i];
- break;
- case RIGHT:
- for(int i=; i<len; i++){
- if(s[i] != Word[x][y+i] && Word[x][y+i] != )
- return false;
- }
- for(int i=; i<len; i++)
- Word[x][y+i]=s[i];
- break;
- case DOWN_R:
- for(int i=; i<len; i++){
- if(s[i] != Word[x+i][y+i] && Word[x+i][y+i] != )
- return false;
- }
- for(int i=; i<len; i++)
- Word[x+i][y+i]=s[i];
- break;
- case DOWN:
- for(int i=; i<len; i++){
- if(s[i] != Word[x+i][y] && Word[x+i][y] != )
- return false;
- }
- for(int i=; i<len; i++)
- Word[x+i][y]=s[i];
- break;
- case DOWN_L:
- for(int i=; i<len; i++){
- if(s[i] != Word[x+i][y-i] && Word[x+i][y-i] != )
- return false;
- }
- for(int i=; i<len; i++)
- Word[x+i][y-i]=s[i];
- break;
- case LEFT:
- for(int i=; i<len; i++){
- if(s[i] != Word[x][y-i] && Word[x][y-i] != )
- return false;
- }
- for(int i=; i<len; i++)
- Word[x][y-i]=s[i];
- break;
- case UP_L:
- for(int i=; i<len; i++){
- if(s[i] != Word[x-i][y-i] && Word[x-i][y-i] != )
- return false;
- }
- for(int i=; i<len; i++)
- Word[x-i][y-i]=s[i];
- break;
- }
- return true;
- }
- void getWhere(int n){
- int layer;
- int n8=;
- for(int i=; ;i++){
- n8 += i*;
- if(n <= n8){
- layer = i;
- n8 -= i*;
- n = n-n8;
- int many = (n-)/(i*);
- switch(many){
- case :
- a[] = MID-i-+n;
- a[] = MID-i;
- break;
- case :
- a[] = MID-i+(n-)%(i*);
- a[] = MID+i;
- break;
- case :
- a[] = MID+i-(n-)%(i*);
- a[] = MID+i;
- break;
- case :
- a[] = MID+i-(n-)%(i*);
- a[] = MID-i;
- break;
- }
- break;
- }
- }
- }
- int getDirect(int x, int y){
- if(x>MID){
- if(y>MID)
- return DOWN_L;
- else if(y==MID)
- return LEFT;
- else
- return UP_L;
- }
- else if(x == MID){
- if(y > MID)
- return DOWN;
- else
- return UP;
- }
- else{
- if(y>MID)
- return DOWN_R;
- else if(y==MID)
- return RIGHT;
- else
- return UP_R;
- }
- }
- void ws_maker(){
- //printf("%d\n",getMax());
- char *s = dictionary[];
- input(MID,MID,s,DOWN);
- //printf("%s\n",s);
- for(int i=,j=; i<dictSize-;i++){
- int judge=;
- s = dictionary[i+];
- if(debug){
- printf("%d %s\n",i,s);
- }
- for(; ;j++){
- getWhere(j);
- int startD = (getDirect(a[],a[])+)%;
- for(int k=; k<=; k++){
- if(input(a[],a[],s,startD%)){
- judge = ;
- break;
- }
- }
- if(judge == )
- break;
- }
- }
- }
- int main(int argc, char **argv)
- {
- //printf("sb%s%d\n",*argv,argc);
- /* read in the dictionary */
- readDictionary(argv[]);
- ws_maker();
- //input(8,2,"love",UP);
- //input(8,1,"fove",UP_R);
- if(debug)
- for(int i=; i<; i++){
- for(int j=; j<; j++)
- printf("%C",Word[i][j]);
- printf("\n");
- }
- }
Personal Software Process Stages |
时间百分比(%) |
实际花费的时间 (分钟) |
原来估计的时间 (分钟) |
|
Planning |
计划 |
20 |
30 |
0 |
· Estimate |
· 估计这个任务需要多少时间,把工作细化并大致排序 |
20 |
30 |
0 |
Development |
开发 |
60 |
90 |
70 |
· Analysis |
· 需求分析 (包括学习新技术) |
10 |
15 |
0 |
· Design Spec |
· 生成设计文档 |
0 |
0 |
0 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0 |
0 |
0 |
· Coding Standard |
· 代码规范 (制定合适的规范) |
0 |
0 |
0 |
· Design |
· 具体设计 |
5 |
7.5 |
10 |
· Coding |
· 具体编码 |
20 |
30 |
45 |
· Code Review |
· 代码复审 |
5 |
7.5 |
10 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
20 |
30 |
5 |
Reporting |
总结报告 |
20 |
30 |
30 |
· Test Report |
· 测试报告 |
10 |
15 |
10 |
· Size Measurement |
· 计算工作量 |
5 |
7.5 |
10 |
· Postmortem & Improvement Plan |
· 事后总结, 并提出改进 |
5 |
7.5 |
10 |
Total |
总计 |
100% |
总用时150 |
总估计的用时 100 |
homework-04 抓瞎的更多相关文章
- 现代程序设计homework——04
题目: 详见:http://www.cnblogs.com/xinz/p/3341551.html 题目本身确实很难,“很难想到一个比较优雅的算法”,这是一个老师请来专门讲解这道题的大牛的原话.确实, ...
- 小兔JS教程(四)-- 彻底攻略JS数组
在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...
- 小兔JS教程(五) 简单易懂的JSON入门
上一节的参考答案: http://xiaotublog.com/demo.html?path=homework/04/index2 本节重点来介绍一下JSON,JSON(JavaScript Obje ...
- hdu--1798--Doing Homework again(贪心)
Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Final阶段第1周/共1周 Scrum立会报告+燃尽图 04
作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2483] 版本控制:https://git.coding.net/liuyy08 ...
- 20181009-5 选题 Scrum立会报告+燃尽图 04
Scrum立会报告+燃尽图(04)选题 此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2194] 一.小组介绍 组长:刘 ...
- Beta阶段第2周/共2周 Scrum立会报告+燃尽图 04
此作业要求参见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2412 版本控制地址 [https://git.coding.net/ ...
- 20181113-7 Beta阶段第1周/共2周 Scrum立会报告+燃尽图 04
作业要求:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2386] 版本控制:[https://git.coding.net/lglr2 ...
- 20181016-4 Alpha阶段第1周/共2周 Scrum立会报告+燃尽图 04
此作业要求https://edu.cnblogs.com/campus/nenu/2018fall/homework/2248 Scrum master:徐常实 一.小组介绍 组长:王一可 组员:范靖 ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
随机推荐
- ionic icons and splash
ionic 用cordova 可以直接设置自己的icons ,不用修改默认的图片了 1.在自己的根目录下新建一个文件夹 如icons 2.然后在icons文件夹下再建一个iOS 文件夹存放所需要的图 ...
- 纯CSS气泡框实现方法探究
气泡框(或者提示框)是网页中一种很常见的元素,大多用来展示提示信息,如下图所示: 拆分来看,形如这种气泡框无外乎就是一个矩形框+一个指示方向的三角形小箭头,要制作出这样的气泡框,如果解决了三角形小箭头 ...
- 【C#基础】static 关键字用法小结
静态变量 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用. 有时候,我们希望 ...
- hadoop 根据SecondaryNameNode恢复Namenode
1.修改conf/core-site.xml 增加 <property> <name>fs.checkpoint.period</name> <value&g ...
- .NET中 使用数组的注意事项
1.初始值问题 对于int.double.float等一些值类型数组,没有赋值的情况下, 默认值是0: 而对于String 等引用类型,初始值为null. 2.IndexOutOfRangeExcep ...
- 实例分析ELF文件动态链接
参考文献: <ELF V1.2> <程序员的自我修养---链接.装载与库>第6章 可执行文件的装载与进程 第7章 动态链接 <Linux GOT与PLT> 开发平台 ...
- 字符串匹配KMP算法
1. 字符串匹配的KMP算法 2. KMP算法详解 3. 从头到尾彻底理解KMP
- Dynamic view
Views are a useful feature of SQL databases, letting us create virtual tables based on SQL select st ...
- 将List<T>转化成 DataTable--调整可空类型的转化错误
加载表结构并保持成XML string cmdText = @"select * from kb_lable_temp where 1=2"; using (SqlConnecti ...
- yhd日志分析(二)
yhd日志分析(二) 继续yhd日志分析,统计数据 日期 uv pv 登录人数 游客人数 平均访问时长 二跳率 独立ip数 1 分析 登录人数 count(distinct endUserId) 游客 ...