计算输出正确的年份的起始截至,中间用空格分隔,是C语言

Problem Description
"Man, this year has the worst weather ever!", David said as he sat crouched in the small cave where we had sought shelter from yet another sudden rainstorm.
"Nuh-uh!", Diana immediately replied in her traditional know-it-all manner.
"Is too!", David countered cunningly. Terrific. Not only were we stuck in this cave, now we would have to listen to those two nagging for at least an hour. It was time to cut this discussion short.
"Big nuh-uh. In fact, 93 years ago it had already rained five times as much by this time of year."
"Duh", David capitulated, "so it's the worst weather in 93 years then."
"Nuh-uh, this is actually the worst weather in 23 years.", Diana again broke in.
"Yeah, well, whatever", David sighed, "Who cares anyway?".
Well, dear contestants, you care, don't you?
Your task is to, given information about the amount of rain during different years in the history of the universe, and a series of statements in the form "Year X had the most rain since year Y", determine whether these are true, might be true, or are false. We say that such a statement is true if:

The amount of rain during these two years and all years between them is known.

It rained at most as much during year X as it did during year Y.

For every year Z satisfying Y < Z < X, the amount of rain during year Z was less than the amount of rain during year X.

We say that such a statement might be true if there is an assignment of amounts of rain to years for which there is no information, such that the statement becomes true. We say that the statement is false otherwise.

Input
The input will consist of several test cases, each consisting of two parts.
The first part begins with an integer 1 <= n <= 50000, indicating the number of different years for which there is information. Next follow n lines. The ith of these contains two integers -109 <= yi <= 109 and 1 <= ri <= 109 indicating that there was ri millilitres of rain during year yi (note that the amount of rain during a year can be any nonnegative integer, the limitation on ri is just a limitation on the input). You may assume that yi < yi+1 for 1 <= i < n.
The second part of a test case starts with an integer 1 <= m <= 10000, indicating the number of queries to process. The following m lines each contain two integers -109 <= Y < X <= 109 indicating two years.
There is a blank line between test cases. The input is terminated by a case where n = 0 and m = 0. This case should not be processed.
Technical note: Due to the size of the input, the use of cin/cout in C++ might be too slow in this problem. Use scanf/printf instead. In Java, make sure that both input and output is buffered.

Output
There should be m lines of output for each test case, corresponding to the m queries. Queries should be answered with "true" if the statement is true, "maybe" if the statement might be true, and "false" if the statement is false.
Separate the output of two different test cases by a blank line.

Sample Input
4
2002 4920
2003 5901
2004 2832
2005 3890
2
2002 2005
2003 2005

3
1985 5782
1995 3048
2005 4890
2
1985 2005
2005 2015

0
0

Sample Output
false
true

maybe
maybe

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
请大佬帮忙看看两道vjudge上的题,代码在ide上能按照题目的用例正确输出,但提交就是wrong answer?
1、某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。 马路上有一些区域要用来建地铁,这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。 输入的第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。 ``` 输入样例: 500 3 150 300 100 200 470 471 输出样例: 298 ``` 我的代码是 ``` #include <iostream> using std::cout; using std::cin; using std::endl; int main() { int l , m , s , e , i , j , n = 0; cin >> l >> m; int * tree = new int[l + 2] {0}; for(i = 1; i <= m; ++ i) { cin >> s >> e; for(j = s; j <= e; ++ j) tree[j] = 1; } for(i = 1; i < l + 2; ++ i) n += !tree[i] ? 1 : 0; delete [] tree; cout << n << endl; return 0; } ``` 2、一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,每行一个正整数a (a < 32768) 输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开 如果没有满足要求的答案,则输出两个0。 ``` 输入样例: 2 3 20 输出样例: 0 0 5 10 ``` 我的代码是 ``` #include <iostream> using std::cout; using std::cin; using std::endl; struct Animal { int min; int max; }; int main() { int n , a , i , j , ji = 0 , tu = 0; cin >> n; Animal * animal = new Animal[n]; for(i = 0; i < n; ++ i) { cin >> a; if(a % 2 || a % 4) { animal[i].min = animal[i].max = 0; continue; } j = a; tu += j / 4; j -= j / 4 * tu; if(j > 0) { ji += j / 2; j -= j / 2 * ji; } animal[i].min = tu + ji; ji = 0; j = a; ji += j / 2; j -= j / 2 * ji; animal[i].max = ji; } for(i = 0; i < n; ++ i) cout << animal[i].min << " " << animal[i].max << endl; delete [] animal; return 0; } ``` 请大佬帮忙看一下,哪里有问题,两段代码在ide上都能正确输出,但提交就是错了
PAT1009 c语言字符串问题 我写的程序输出时起始位置会多一个空格,如何改正才能没有空格
#include<stdio.h> #include<string.h> int main(){ int i,j=0,m,k=0; char sen[100]; char s[10][20]; gets(sen); m=strlen(sen)+1; for(i=0;i<m;i++){ if(sen[i]=='\0'){ s[j][k]='\0'; k=0; j++; } if(sen[i]==' ') { s[j][k]='\0'; k=0; j++; } s[j][k]=sen[i]; k++; } for(j=j-1;j>=0;j--){ if(j!=0) printf("%s ",s[j]); else printf("%s\n",s[j]); } return 0; } 题目连接http://www.patest.cn/contests/pat-b-practise/1009
类的定义和它的成员函数的实现分开放会报错
为什么将类的定义和它的成员函数的实现分别放在.h和.cpp中就会报错: LNK2019: 无法解析的外部符号 "public: void __cdecl YtPlc_Mitsubishi_Mc::InitParam(void)" (?InitParam@YtPlc_Mitsubishi_Mc@@QEAAXXZ),该符号在函数 main 中被引用 PLC_test D:\zhoujy\prj\PLC_test\PLC_test\PLC_test.obj .h中的代码如下: ``` class YtPlc_Mitsubishi_Mc // : public YtPlc { public: YtPlc_Mitsubishi_Mc(); //初始化参数 void InitParam(); }; ``` .cpp中的实现如下: ``` #include "ytplc_mitsubishi_mc.h" YtPlc_Mitsubishi_Mc::YtPlc_Mitsubishi_Mc() { } void YtPlc_Mitsubishi_Mc::InitParam() { //发送命令 write_buff_[0] = 0x50; // 副头部 write_buff_[1] = 0x00; // 副头部 write_buff_[2] = 0x00; // 网络编号 write_buff_[3] = (char)0xff; // 可编程控制器编号 write_buff_[4] = (char)0xff; // 请求目标模块I/O编号L write_buff_[5] = 0x03; // 请求目标模块I/O编号H write_buff_[6] = 0x00; // 请求目标模块站号 // 长度从CPU监视定时器L到指令结束 write_buff_[7] = 0x00; //请求数据长度L write_buff_[8] = 0x00; //请求数据长度H //CPU 监视定时器 0:无限等待 0001~FFFF H (1~65535): 等待时间(单位 250ms) @《三菱Q_L系列通信协议参考》3.1.3 P73 write_buff_[9] = 0x01; // CPU监视定时器L write_buff_[10] = 0x00; // CPU监视定时器H // 指令1401 @《三菱Q_L系列通信协议参考》3.3.7 P154 write_buff_[11] = 0x01; // 指令L write_buff_[12] = 0x14; // 指令H write_buff_[13] = 0x00; // 子指令L write_buff_[14] = 0x00; // 子指令H // 字单位的批量写入 write_buff_[15] = 0x00; // 起始软元件 write_buff_[16] = 0x00; // 起始软元件 write_buff_[17] = 0x00; // 起始软元件 write_buff_[18] = 0x00; // 软元件代码 write_buff_[19] = 0x00; // 软元件点数 write_buff_[20] = 0x00; // 软元件点数 // 软元件点数的范围 // e.g 1995H 1202H 1130H -> {95H 19H 02H 12H 30H 12H} for (int i = 0; i < 20; i++) { write_buff_[21 + i * 2] = 0x00; write_buff_[21 + i * 2 + 1] = 0x00; } //读取命令 read_buff_[0] = 0x50; // 副头部 read_buff_[1] = 0x00; // 副头部 read_buff_[2] = 0x00; // 网络编号 read_buff_[3] = (char)0xff; // 可编程控制器编号 read_buff_[4] = (char)0xff; // 请求目标模块I/O编号L read_buff_[5] = 0x03; // 请求目标模块I/O编号H read_buff_[6] = 0x00; // 请求目标模块站号 read_buff_[7] = 0x0c; //请求数据长度L read_buff_[8] = 0x00; //请求数据长度H //CPU 监视定时器 0:无限等待 0001~FFFF H (1~65535): 等待时间(单位 250ms) @《三菱Q_L系列通信协议参考》3.1.3 P73 read_buff_[9] = 0x01; // CPU监视定时器L read_buff_[10] = 0x00; // CPU监视定时器H // 0401 T寄存器读取 @《三菱Q_L系列通信协议参考》3.3.6 P150 // WARNING: M寄存器读取 send_buff_[18] = 0x90 待确认 read_buff_[11] = 0x01; // 指令L read_buff_[12] = 0x04; // 指令H read_buff_[13] = 0x00; // 子指令L read_buff_[14] = 0x00; // 子指令H // 字单位的批量写入 read_buff_[15] = 0x00; // 起始软元件 read_buff_[16] = 0x00; // 起始软元件 read_buff_[17] = 0x00; // 起始软元件 read_buff_[18] = 0x00; // 软元件代码 read_buff_[19] = 0x00; // 软元件点数 read_buff_[20] = 0x00; // 软元件点数 } ``` 但如果把它们都放到头文件中,即把成员函数和构造函数的实现和类的定义放到一起,就不会有这个问题了
如何计算静态变量的内存地址相对其Class对象内存地址的偏移量呢
![图片说明](https://img-ask.csdn.net/upload/201912/30/1577667667_548866.png) ![图片说明](https://img-ask.csdn.net/upload/201912/30/1577667676_763168.png) 我在一篇文章中看到这么一段话,我想验证一下 对于HotSpot VM的对象模型,静态字段的“偏移量”就是: - JDK 6或之前:相对该类对应的InstanceKlass(实际上是包装InstanceKlass的klassOopDesc)对象起始位置的偏移量 - JDK 7或之后:相对该类对应的java.lang.Class对象起始位置的偏移量。 希望大大们能帮忙解答,感激不尽
读取硬盘LBA扩展分区的起始柱面(StartCylinder)信息以十进制输出
怎样读取硬盘各分区(包括LBA扩展分区)的起始柱面(StartCylinder)信息 然后以十进制输出, 并计算通过绝对路径指定的文件所在的柱面。
如何计算DIB图像的像素起始位置?
// 找到DIB图像象素起始位置 m_pBits= (unsigned char )::FindDIBBits(pBits); DIB图像的起始位置怎么计算啊?新手渣渣求各路大神指教.
修改程序:信源编解码(c语言)
修改程序:问题1。源文件source文本空间太长汉字太多无法运行2,未按频度要求排序 问题描述: 信源编解码是通信系统的重要组成部分。本实验旨在通过程序设计实现基于哈夫曼编码的信源编解码算法。程序具备以下功能: 对于给定的源文档 SourceDoc.txt, 1) 统计其中所有字符的频度(某字符的频度等于其出现的总次数除以总字符数) , 包括字母(区分大小写) 、标点符号及格式控制符(空格、回车等) 。 2) 按频度统计结果生成哈夫曼编码码表。 3) 基于哈夫曼码表进行编码,生成对应的二进制码流,并输出到文件 Encode.dat。 4) 对二进制码流进行哈夫曼解码,把结果输出到文件 DecodeDoc.txt。 5) 判断DecodeDoc.txt与SourceDoc.txt内容是否一致,以 验证编解码系统的正确性。 要求: 1) 用 C 语言实现。 2) 用子函数实现各功能模块。 3) 输出文件 Statistic.txt,包含的信息有:按频度大小排序的字符表,及各字符出现 的次数、频度及哈夫曼编码。 4) 应至少包含链表、二叉树的数据结构。 5) 不能用冒泡排序算法。 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/stat.h> #include<sys/types.h> #include<fcntl.h> #include<unistd.h> #include<errno.h> #define N 10000 int count = 0; //每增加一个新的字符, count增加1, 可表示a中的字符种类数, 也即哈夫曼树叶子点个数 /*定义哈夫曼树结构体*/ typedef struct HuffmanTree{ int weight; int parent; int Lchild; int Rchild; }HuffmanTree[2*N]; /*定义储存字符及其出现次数的结构体*/ typedef struct DifferentCharacter{ char char_date; int num; //相同字符出现的次数 char a_code[100]; //每种字符对应的编码 }difcha[N]; /*在一定范围内选择两个weight最小的结点, 并将两个结点的序号赋给s1, s2*/ void select_two(HuffmanTree ht, int j, int *s1, int *s2) { int i = 1, temp; int min1 = 0, min2 = 0; while( (ht[i].parent != 0) && (i <= j) ) i++; *s1 = i; min1 = ht[i++].weight; while( (ht[i].parent != 0) && (i <= j) ) i++; *s2 = i; min2 = ht[i++].weight; if(min1 > min2){ temp = min1; min1 = min2; min2 = temp; } for(; i <= j; i++){ //遍历parent不为0的结点 if(ht[i].parent != 0) continue; if(ht[i].weight <= min1){ min2 = min1; min1 = ht[i].weight; *s2 = *s1; *s1 = i; } else if( (ht[i].weight < min2) && (ht[i].weight > min1) ) { min2 = ht[i].weight; *s2 = i; } } } /*建哈夫曼树*/ void EstHuffmanTree(HuffmanTree ht, int *w, int n){ int i; int s1 = 0, s2 = 0; for(i = 1; i <= n; i++){ //初始化哈夫曼树, 前n个单元存放叶子点 ht[i].weight = w[i]; ht[i].parent = 0; ht[i].Lchild = 0; ht[i].Rchild = 0; } for(i = n+1; i <= 2*n-1; i++){ //后n-1个单元存放非叶子点 ht[i].weight = 0; ht[i].parent = 0; ht[i].Lchild = 0; ht[i].Rchild = 0; } for(i = n+1; i <= 2*n-1; i++){ select_two(ht, i-1, &s1, &s2); //创建非叶子点, 建立哈夫曼树, 每次在ht[1]~ht[i-1]范围内选两个最小的weight结点,并将其序号赋给s1, s2 ht[i].weight = ht[s1].weight + ht[s2].weight; ht[i].Lchild = s1; ht[i].Rchild = s2; ht[s1].parent = i; ht[s2].parent = i; } //哈夫曼树建立完毕 } /*求哈弗曼编码*/ void CrtHuffmanCode(HuffmanTree ht, char **hcd, int n){ int start = 0, c = 0, p = 0, i; char *cd = (char*)malloc(n*sizeof(char)); //分配求当前编码的工作空间 cd[n-1] = '\0'; //从左向右存放编码 for(i = 1; i <= n; i++) { start = n-1; //初始化编码起始指针 c = i; p = ht[i].parent; while(p != 0){ start--; if(ht[p].Lchild == c) cd[start] = '0'; //左分支标0 else cd[start] = '1'; //右分支标1 c = p; //向上倒推 p = ht[c].parent; } hcd[i] = (char*)malloc((n-start)*sizeof(char)); strcpy(hcd[i], &cd[start]); } free(cd); } /*自定义错误处理函数*/ void my_err(char *err_string, int line){ printf("Line %d:\n", line); perror(err_string); exit(1); } /*从 buf_read 中统计每个字符出现的次数,将次数作为该字符的权值*/ void Statistics(difcha a, char *buf_read){ int i, j = 0; for(i = 0; i < strlen(buf_read) ; i++){ //对buf_read中的字符遍历 for(j = 0; j < count; j++){ //检查是否是新的字符 if(a[j].char_date == buf_read[i]){ a[j].num++; //若是旧字符, 则num++; break; } } if(j == count){ //若是新字符, 则记录到a中, 且对应的num++ a[count].char_date = buf_read[i]; a[count].num++; count++; //更新count } } } /*从 SourceDoc.txt 读取数据到 buf_read */ void ReadFile(char *pathName, char *buf_read){ int fd_date; int len = 0; if( (fd_date = open(pathName, O_RDWR)) < 0) //以读写方式打开SourceDoc.txt文件 my_err("open SourceDoc.txt", __LINE__); if(lseek(fd_date, 0, SEEK_END) < 0) //获取文件长度,并保持文件读写指针在文件开始处 my_err("lseek", __LINE__); if( (len = lseek(fd_date, 0, SEEK_CUR)) < 0 ) my_err("lseek", __LINE__); if(lseek(fd_date, 0, SEEK_SET) < 0) my_err("lseek", __LINE__); if(read(fd_date, buf_read, len) > len) //从SourceDoc.txt中读取内容 my_err("read SourceDoc.txt", __LINE__); } /*将 buf_code 写入 Encode.dat 中*/ void WriteFile(char *pathName, char *buf_code){ int fd_code; if((fd_code = open(pathName, O_CREAT|O_TRUNC|O_RDWR, S_IRWXU)) < 0) //创建Encode.dat文件 my_err("open Encode.dat", __LINE__); if( write(fd_code, buf_code, strlen(buf_code)) != strlen(buf_code) ) //将 buf_code 写入Encode.dat my_err("write Encode.dat", __LINE__); } /*主函数*/ void main(){ char buf_read[N] = {'\0'}; char buf_code[N] = {'\0'}; char buf_yima[N] = {'\0'}; char *hcd[N]; char temp[50] = {'\0'}; difcha a; int i, j, n, k = 0, m = 0; int w[N] = {0}; HuffmanTree ht; ReadFile("SourceDoc.txt", buf_read); Statistics(a, buf_read); for(i = 0; i < count; i++) w[i+1] = a[i].num; EstHuffmanTree(ht, w, count); //建HuffmanTree CrtHuffmanCode(ht, hcd, count); //对树中字符进行编码 for(i = 1; i <= count; i++) //将每个字符对应的编码存入结构体 a 中 strcpy(a[i-1].a_code, hcd[i]); FILE *fp1; fp1=fopen("Statistic.txt","w"); for(i = 0; i < count; i++) //查看每个字符的权值和对应的编码 fprintf(fp1,"%c %d %s\n", a[i].char_date, a[i].num, a[i].a_code); fclose(fp1); for(i = 0; i < strlen(buf_read) ; i++){ //遍历 buf_read, 给 SourceDoc.txt 中每个字符匹配编码, 存入 buf_code 中 for(j = 0; j < count; j++){ if(buf_read[i] == a[j].char_date){ strcat(buf_code, a[j].a_code); break; } } if(j == count) //匹配异常 printf("Unknown Character: %c\n", buf_read[i]); } WriteFile("Encode.dat", buf_code); //将 buf_code 写入 Encode.dat 中 ReadFile("Encode.dat", buf_read); //从 Encode.dat 中读取全部编码 n = strlen(buf_read); for(i = 0; i < n; i++){ //为 Encode.dat 中的编码匹配字符 temp[k++] = buf_read[i]; for(j = 0; j < count; j++){ if(strcmp(temp, a[j].a_code) == 0){ buf_yima[m++] = a[j].char_date; break; } } if(j < count){ //匹配成功, 对 temp 初始化 for(;k > 0; k--) temp[k] = '\0'; } } FILE *fp2; fp2=fopen("DecodeDoc.txt","w"); fprintf(fp2,"%s", buf_yima); fclose(fp2); }
VIM-adventures 编辑器问题
Problem Description http://vim-adventures.com/ vim是一个非常方便的文本编辑器,使用它可以快速的编辑文本 vim-adventures是一个很有意思的解谜游戏,需要玩家使用一些vim下的指令来移动光标来解决一系列谜题 为了化简题意此题我们只考虑如下指令: h:让光标向左边移动一格 j:让光标向下边移动一格 k:让光标向上边移动一格 l:让光标向右边移动一格 w:让光标移动到下一个"word的开头" e:让光标移动到下一个"word的结尾" b:让光标移动到前一个"word的开头" ge:让光标移动到前一个"word的结尾" W:让光标移动到下一个"WORD的开头" E:让光标移动到下一个"WORD的结尾" B:让光标移动到前一个"WORD的开头" gE:让光标移动到前一个"WORD的结尾" (注意断句,是"下一个|word的结尾",而不是"下一个word|的结尾".如"1234 5678",2的下一个word的结尾是4而不是8,其他同理) 注: 其中一个word由字母/数字/下划线序列或者其他的非空字符序列组成.由white space(空格或者换行符)分开; 其中一个WORD由非空字符序列组成.由white space(空格或者换行符)分开; 下一个/前一个word/WORD可以跨行,如当前word是该行最后一个word,那么下一个word就是下一行的第一个word; 如果没有下一个/前一个word/WORD,那么按下w/e/b/ge/W/B/E/gE之后会让光标移动到所能移动的最远处; 例子: This is a line with example text <----<--<-<----<----<-------<--- b b b b b b b This is a line with example text <--<--<-<----<----<-------<----- ge ge ge ge ge ge ge This is a line with example text ----->-->->---->---->------->--> w w w w w w w This is a line with example text --->-->->---->---->------->----> e e e e e e e while ((((true)))) printf("Hello VIM!") ------>--->--->---->------------->-->-> w w w w W w w (w,e,b,ge,W等表示按下该键后可以让当前光标移动到对应的"<",">"位子. 前两个例子光标一开始在最右,后三个例子光标一开始在最左) 文本中还有一些不能走上去的位置,如上图中的石头,这些石头光标不管怎么样都没办法移动上去. 现在给你一段文本,要求你从起点位置按最少的按键将光标移动到终点位置. 其中ge算两次按键,大写字母如W可以按shift+w(算两次按键),或者在Caps Lock打开的状态下按一下w,打开/关闭Caps Lock算一次按键. shift不能按住不放,如在Caps Lock大写的情况下, 按下shift+G和shift+E来实现ge算4次按键. 起始状态Caps Lock是在小写状态 Input 第一行一个整数T代表接下去有T组数据 每组数据第一行是六个整数N,M,sx,sy,ex,sy.其中N,M代表文本的尺寸,(sx,sy)代表起点位置,(ex,ey)代表终点位置,下标从0开始 接下去N行,每行有M个字符,代表文本 接下去N行,每行有M个字符,代表石头,如果是0则表示没有石头,如果是1则表示有石头 [Technical Specification] 0<T<=50 0<N,M<=250 0<=sx,ex<N 0<=sy,ey<M 代表文本的N*M矩阵所有字符的ascii码在32到126之间 每行字符都不以空格开头/结尾 代表石头的N*M矩阵只会包含0或者1 起点和终点一定没有石头 Output 首先输出case数(见sample),接着输出最小的按键使得光标从起点移动到终点.如果走不到终点则输出-1. Sample Input 8 1 10 0 0 0 9 wwwwwwww w 0111111110 1 10 0 0 0 9 WWW.WWWW W 0111111110 1 10 0 0 0 9 e eeeeeeee 0111111110 1 10 0 0 0 9 E EEEE.EEE 0111111110 1 10 0 9 0 0 bbbbbbbb b 0111111110 1 10 0 9 0 0 BBBBB.BB B 0111111110 1 10 0 9 0 0 . gegegege 0111111110 1 10 0 9 0 0 . gEgE..gE 0111111110 Sample Output Case #1: 1 Case #2: 2 Case #3: 1 Case #4: 2 Case #5: 1 Case #6: 2 Case #7: 2 Case #8: 3
关于使用C#来编写利用递归实现八皇后问题
我这个代码是跟着小甲鱼之前发的视频来编写的,他用的是c语言,我想用c#编写一下试试,结果结果一直都不对,和c语言代码对照了好几次也没有发现问题,我用了相同的思路用c++编写答案也是正确的,希望各位大佬帮助一下 代码如下 ``` using System; namespace 递归实现八皇后问题 { class Program { static int count = 0; static bool IsSafe(int row, int j, int[,] chess) { bool flag1 = false, flag2 = false, flag3 = false, flag4 = false, flag5 = false,flag6 = false; //判断同行上是否有皇后 for (int i = row;i>=0;i--) { if(chess[i,j]==1) { flag6 = true; break; } } //判断同列上是否有皇后 for (int i = row; i < 8; i++) { if (chess[i, j] != 0) { flag1 = true; break; } } //因为代码无法直接判断一整条斜线上是否有皇后,所以分为四个部分 //判断左上角是否有皇后 for (int i = row, k = j; i >= 0 && k >= 0; i--, k--) { if (chess[i, k] != 0) { flag2 = true; break; } } //判断右下角是否有皇后 for (int i = row, k = j; i < 8 && k < 8; i++, k++) { if (chess[i, k] != 0) { flag3 = true; break; } } //判断左下角是否有皇后 for (int i = row, k = j; i < 8 && k >= 0; i++, k--) { if (chess[i, k] != 0) { flag4 = true; break; } } //判断右上角是否有皇后 for (int i = row, k = j; i >=0 && k <8; i--, k++) { if (chess[i, k] != 0) { flag5 = true; break; } } //最后判断 if(flag1||flag2||flag3||flag4||flag5||flag6) { return false; } else { return true; } } //此处的row代表的时起始的行数,不是总行数 static void EightQueen(int row ,int n,int[,] chess) { //创建一个新的棋盘 int[,] chess2 = new int[8,8]; for(int i = 0;i<8;i++) { for(int j = 0;j<8;j++) { chess2[i,j] = chess[i,j]; } } if (row == 8)//递归结束 { Console.WriteLine("第"+(count+1)+"种"); for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { Console.Write(chess2[i,j]+" "); } Console.WriteLine(); } Console.WriteLine(); count++; } else//判断以及放入皇后棋子 { for(int j=0;j<n;j++) { if (IsSafe(row,j,chess))//这里使用IsSafe方法判断该位置是否可放入皇后棋子 { for(int i=0;i<8;i++) { chess[row, i] = 0; } chess[row, j] = 1; EightQueen(row + 1, n, chess); } } } } static void Main(string[] args) { int[,] chess = new int[8,8]; for(int i = 0;i<8;i++) { for(int j = 0;j<8;j++) { chess[i,j] = 0; } } EightQueen(0, 8, chess); Console.WriteLine("总共有" + count + "种摆放方法"); } } } ```
NI的485板卡输出波形空闲时电平为0V,不知道是对的还是哪里有问题?
一般来说,串口的输出波形是空闲时线路电压为高,比如5v,当发送数据时,起始位为低电平比如-5v.但是我用NI 的485板卡输出空闲电平是0v,当发送数据时,起始位为-5v。不知道这个空闲时电平是0v,是对的还是哪里的问题?图片中国红色为差分波形。
使用codeblock调试该控制台编程程序时为什么出现这个报错?
![图片说明](https://img-ask.csdn.net/upload/201912/16/1576458144_934096.png) ``` #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> #include <Windows.h> #include <conio.h> int main() { //定义输出信息 char *str = "Hello World!"; int i; int len = strlen(str); //阴影属性 WORD shadow = BACKGROUND_INTENSITY; //文本属性 WORD text = BACKGROUND_GREEN | BACKGROUND_INTENSITY; //获得标准输出设备句柄 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //定义窗口缓冲区信息结构体 CONSOLE_SCREEN_BUFFER_INFO screenInfo; //获得窗口缓冲区信息 GetConsoleScreenBufferInfo(hOut, &screenInfo); //定义一个文本框输出区域 SMALL_RECT rc; //定义文本框的起始坐标 COORD posText; //定义阴影框的起始坐标 COORD posShadow; //确定区域的边界 rc.Top = 8; //上边界 rc.Bottom = rc.Top + 4; //下边界 rc.Left = (screenInfo.dwSize.X - len) / 2 - 2; //左边界,为了让输出的字符串居中 rc.Right = rc.Left + len + 4; //右边界 //确定文本框起始坐标 posText.X = rc.Left; posText.Y = rc.Top; //确定阴影框的起始坐标 posShadow.X = posText.X + 1; posShadow.Y = posText.Y + 1; for (i = 0; i < 5; ++i) //先输出阴影框 { FillConsoleOutputAttribute(hOut, shadow, len + 4, posShadow, NULL); posShadow.Y++; } for (i = 0; i < 5; ++i) //在输出文本框,其中与阴影框重合的部分会被覆盖掉 { FillConsoleOutputAttribute(hOut, text, len + 4, posText, NULL); posText.Y++; } //设置文本输出处的坐标 posText.X = rc.Left + 2; posText.Y = rc.Top + 2; WriteConsoleOutputCharacter(hOut, str, len, posText, NULL); //输出字符串 getchar(); SetConsoleTextAttribute(hOut, screenInfo.wAttributes); // 恢复原来的属性 CloseHandle(hOut); system("pause"); return 0; } ``` 出错代码片段为 ``` FillConsoleOutputAttribute(hOut, shadow, len + 4, posShadow, NULL); ``` 来自 <https://blog.csdn.net/dengjin20104042056/article/details/90549161>
为什么这段程序在输入文本较大(小于10M)时会显示无效内存引用呢?
背景: 一种压缩文本文件(假设文件中不包含数字)的方法如下: 1. 原始文本文件中的非字母的字符,直接拷贝到压缩文件中; 2. 原始文件中的词(全部由字母组成),如果是第一次出现,则将该词加入到一个词的列表中,并拷贝到压缩文件中;否则该词不拷贝到压缩文件中,而是将该词在词的列表中的位置拷贝到压缩文件中。 3. 词的列表的起始位置为 1 。 词的定义为文本中由大小写字母组成的最大序列。大写字母和小写字母认为是不同的字母 输入: 输入为一段文本,可以假设输入中不会出现数字、每行的长度不会超过 80 个字符,并且输入文本的大小不会超过 10M。 输出: 压缩后的文本 测试用例 1 以文本方式显示 1.Please, please do it--it would please Mary very,↵ 2.very much.↵ 3.↵ 4.Thanks↵ 以文本方式显示 1.Please, please do it--4 would 2 Mary very,↵ 2.7 much.↵ 3.↵ 4.Thanks↵ #include<stdio.h> #include<string.h> int main() { char s[10000][81]={0}; int k=0,l=1,r=1; for(;;r++) {k=1; char a[90]={0}; char b[90][100]={0},c[100]={0}; int i=1; scanf("%c",&a[0]); if(a[0]==0) break; do scanf("%c",&a[i]); while(a[i++]!='\n'); //输入 int j=0; int n=0; if(a[0]!=0) { for(j=0;a[j]!=0;j++) { if((a[j]>='a'&&a[j]<='z')||(a[j]>='A'&&a[j]<='Z')) {b[k][n]=a[j]; n++;} //将词存入b[]中; else { c[k]=a[j];//将其他字符存入c[]中 b[k][n]=0; k++;//换行 n=0;}}} //将n清零以便下一次纪录 char d[90]={0}; for(n=1;n<k;n++) {j=1; for(;j<l;j++) if(strcmp(s[j],b[n])==0)//比较s与b {sprintf(d,"%d",j); strcpy(b[n],d);//把bn变为相应的次数 break;} if(j==l&&b[n][0]!=0)//将b中单词存入s以便进行上一个循环 { strcpy(s[l],b[n]); l++;} printf("%s",b[n]); printf("%c",c[n]); } } return 0; }
求这个多程序实现系统菜单功能整合程序的错误及改正
1.温度转换表 ``` #include <stdio.h> main( ) { float c,f,c1,c2,d; printf("请输入起始温度:") ; scanf("%f",&c1); printf("请输入结束温度:") ; scanf("%f",&c2); printf("请输入间隔温度:") ; scanf("%f",&d); printf(" 温度对照表\n"); printf("------------------------\n"); printf("| 摄氏温度 | 华氏温度 |\n"); for(c=c1;c<=c2;c=c+d) { f=9.0/5*c+32; printf("------------------------\n"); printf("| %5.1f | %5.1f |\n",c,f); } printf("------------------------\n"); } ``` 2.加法练习程序 ``` #include <stdio.h> #include <stdlib.h> #include <time.h> main( ) { int a,b,c; int i,score=0; srand((unsigned)time(NULL)); for(i=0;i<10;i++) { a=rand()%20; b=rand()%20; printf("第%2d题:%d+%d=?\n",i+1,a,b); printf("请输入答案:"); scanf("%d",&c); if(c==a+b) { printf("正确!"); printf("%d+%d=%d\n",a,b,a+b); score=score+10; } else { printf("错误!"); printf("%d+%d=%d\n",a,b,a+b); } } printf("成绩:%d\n",score); } ``` 3.石头剪刀布游戏 ``` #include <stdio.h> #include <stdlib.h> #include <time.h> int rps(int computer,int human) { char *c_string,*h_string; int c_win=1,h_win=-1,dogfall=0; if(computer==0) c_string="石头"; else if(computer==1) c_string="剪刀"; else if(computer==2) c_string="布"; if(human==0) h_string="石头"; else if(human==1) h_string="剪刀"; else if(human==2) h_string="布"; printf("计算机:%s,用户:%s\n",c_string,h_string); switch(computer-human) { case 0: printf("平局!\n"); return(dogfall); case -1: printf("计算机赢!\n"); return(c_win); case -2: printf("用户赢!\n"); return(h_win); case 1: printf("用户赢!\n"); return(h_win); case 2: printf("计算机赢!\n"); return(c_win); } } main() { int computer,human,i=1; int c_win_n=0,h_win_n=0; int flag; srand((unsigned)time(NULL)); printf("石头、剪刀、布游戏\n"); while(1) { printf("\n计算机 %d :%d 用户\n",c_win_n,h_win_n); printf("第%d局:\n",i); computer=rand()%3; printf("请输入(石头-0,剪刀--1,布--2):"); scanf("%d",&human); flag=rps(computer,human); if(flag==1) c_win_n++; if(flag==-1) h_win_n++; if(c_win_n==3) { printf("\n计算机 %d :%d 用户\n",c_win_n,h_win_n); printf("计算机获胜!\n"); break; } if(h_win_n==3) { printf("\n计算机 %d :%d 用户\n",c_win_n,h_win_n); printf("用户获胜!\n"); break; } i++; } } ``` 4.菱形图案 ``` #include <stdio.h> main() { int i,j; for(i=0;i<5;i++) { for(j=0;j<35-i;j++) printf(" "); for(j=0;j<2*i+1;j++) printf("*"); printf("\n"); } for(i=0;i<4;i++) { for(j=0;j<32+i;j++) printf(" "); for(j=0;j<7-2*i;j++) printf("*"); printf("\n"); } } ``` 5.sin图形及数字显示 ``` #include <stdio.h> #include <math.h> #define PI 3.1415926 #define M 8 #define N 14 void printchar(int a[][N]) { int i,j,k; float x,y; for(x=0;x<=360;x=x+15) { y=40+10*sin(x*PI/180); for(k=0;k<y;k++) printf(" "); printf("*"); printf("\n"); } for(i=0;i<M;i++) { for(j=0;j<N;j++) if(a[i][j]==1) printf("#"); else printf(" "); printf("\n"); } } main() { int a[M][N]={ 0,0,0,1,0,0,0,0,0,1,1,1,0,0, 0,0,1,1,0,0,0,0,1,0,0,0,1,0, 0,0,0,1,0,0,0,0,0,0,0,0,1,0, 0,0,0,1,0,0,0,0,0,0,0,1,0,0, 0,0,0,1,0,0,0,0,0,0,1,0,0,0, 0,0,0,1,0,0,0,0,0,1,0,0,0,0, 0,0,0,1,0,0,0,0,1,0,0,0,0,0, 0,1,1,1,1,1,0,1,1,1,1,1,1,0 }; printchar(a); } ``` 6.登录界面 ``` #include <stdio.h> #include <string.h> void wellcome() { printf("\n欢迎使用本系统!\n"); printf("请按任意键...\n"); getch(); } void error() { printf("\n账号或密码错误!\n"); printf("请按任意键...\n"); getch(); } void bye() { printf("您无权使用本系统!\n"); printf("请按任意键...\n"); getch(); } void mygets(char s[]) { char ch,*p=s; ch=getch(); while(ch!='\r') { printf("*"); *p=ch; p++; ch=getch(); } *p='\0'; } int login() { char user[10],pwd[10]; int i,f; for(i=1;i<=3;i++) { printf("账户:"); gets(user); printf("密码:"); mygets(pwd); if(!strcmp(user,"admin") && !strcmp(pwd,"123456")) { f=1; break; } else error(); if(i==3) f=0; } return(f); } main() { if(login()) wellcome(); else bye(); } ``` 7.菜单程序 ``` #include <stdio.h> void wait() { printf("\n请按任意键...\n"); getch(); } void wellcome() { printf("\n欢迎!\n"); wait(); } void bye() { printf("\n再见!\n"); wait(); } void f11() { printf("\n文件功能1\n"); wait(); } void f12() { printf("\n文件功能2\n"); wait(); } void f13() { printf("\n文件功能3\n"); wait(); } void f14() { printf("\n文件功能4\n"); wait(); } void f21() { printf("\n编辑功能1\n"); wait(); } void f22() { printf("\n编辑功能2\n"); wait(); } void f23() { printf("\n编辑功能3\n"); wait(); } void f24() { printf("\n编辑功能4\n"); wait(); } void f31() { printf("\n查看功能1\n"); wait(); } void f32() { printf("\n查看功能2\n"); wait(); } void f33() { printf("\n查看功能3\n"); wait(); } void f34() { printf("\n查看功能4\n"); wait(); } void f41() { printf("\n插入功能1\n"); wait(); } void f42() { printf("\n插入功能2\n"); wait(); } void f43() { printf("\n插入功能3\n"); wait(); } void f44() { printf("\n插入功能4\n"); wait(); } void menu1() { char choice; int f=1; do { printf("\n"); printf("---文件子菜单---\n"); printf(" 1...文件功能1\n"); printf(" 2...文件功能2\n"); printf(" 3...文件功能3\n"); printf(" 4...文件功能4\n"); printf(" 0...返回\n"); printf("请选择[1/2/3/4/0]:"); choice=getch(); switch(choice) { case '1':f11(); break; case '2':f12(); break; case '3':f13(); break; case '4':f14(); break; case '0':f=0; break; } } while(f==1); } void menu2() { char choice; int f=1; do { printf("\n"); printf("---编辑子菜单---\n"); printf(" 1...编辑功能1\n"); printf(" 2...编辑功能2\n"); printf(" 3...编辑功能3\n"); printf(" 4...编辑功能4\n"); printf(" 0...返回\n"); printf("请选择[1/2/3/4/0]:"); choice=getch(); switch(choice) { case '1':f21(); break; case '2':f22(); break; case '3':f23(); break; case '4':f24(); break; case '0':f=0; break; } } while(f==1); } void menu3() { char choice; int f=1; do { printf("\n"); printf("---查看子菜单---\n"); printf(" 1...查看功能1\n"); printf(" 2...查看功能2\n"); printf(" 3...查看功能3\n"); printf(" 4...查看功能4\n"); printf(" 0...返回\n"); printf("请选择[1/2/3/4/0]:"); choice=getch(); switch(choice) { case '1':f31(); break; case '2':f32(); break; case '3':f33(); break; case '4':f34(); break; case '0':f=0; break; } } while(f==1); } void menu4() { char choice; int f=1; do { printf("\n"); printf("---插入子菜单---\n"); printf(" 1...插入功能1\n"); printf(" 2...插入功能2\n"); printf(" 3...插入功能3\n"); printf(" 4...插入功能4\n"); printf(" 0...返回\n"); printf("请选择[1/2/3/4/0]:"); choice=getch(); switch(choice) { case '1':f41(); break; case '2':f42(); break; case '3':f43(); break; case '4':f44(); break; case '0':f=0; break; } } while(f==1); } void menu() { char choice; int f=1; do { printf("\n"); printf("------菜单------\n"); printf(" 1.......文件\n"); printf(" 2.......编辑\n"); printf(" 3.......查看\n"); printf(" 4.......插入\n"); printf(" 0.......退出\n"); printf("请选择[1/2/3/4/0]:"); choice=getch(); switch(choice) { case '1':menu1(); break; case '2':menu2(); break; case '3':menu3(); break; case '4':menu4(); break; case '0':f=0; break; } } while(f==1); } main() { wellcome(); menu(); bye(); } ``` 将以上程序整合为一个综合程序 ``` #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #include <time.h> #endif #define PI 3.1415926 void wait() { printf("\n请按任意键...\n"); getch(); } void wellcome() { printf("\n欢迎使用本系统!\n"); wait(); } void bye1() { printf("\n您无权使用本系统!\n"); wait(); } void bye2() { printf("\n再见!\n"); wait(); } void error() { printf("\n账号或密码错误!\n"); wait(); } void f1() { float c,f,c1,c2,d; printf("请输入起始温度:") ; scanf("%f",&c1); printf("请输入结束温度:") ; scanf("%f",&c2); printf("请输入间隔温度:") ; scanf("%f",&d); printf(" 温度对照表\n"); printf("------------------------\n"); printf("| 摄氏温度 | 华氏温度 |\n"); for(c=c1;c<=c2;c=c+d) { f=9.0/5*c+32; printf("------------------------\n"); printf("| %5.1f | %5.1f |\n",c,f); } printf("------------------------\n"); wait(); } void f2() { int a,b,c; int i,score=0; srand((unsigned)time(NULL)); for(i=0;i<10;i++) { a=rand()%20; b=rand()%20; printf("第%2d题:%d+%d=?\n",i+1,a,b); printf("请输入答案:"); scanf("%d",&c); if(c==a+b) { printf("正确!"); printf("%d+%d=%d\n",a,b,a+b); score=score+10; } else { printf("错误!"); printf("%d+%d=%d\n",a,b,a+b); } } printf("成绩:%d\n",score); wait(); } void f3() { int rps(int computer,int human) { char *c_string,*h_string; int c_win=1,h_win=-1,dogfall=0; if(computer==0) c_string="石头"; else if(computer==1) c_string="剪刀"; else if(computer==2) c_string="布"; if(human==0) h_string="石头"; else if(human==1) h_string="剪刀"; else if(human==2) h_string="布"; printf("计算机:%s,用户:%s\n",c_string,h_string); switch(computer-human) { case 0: printf("平局!\n"); return(dogfall); case -1: printf("计算机赢!\n"); return(c_win); case -2: printf("用户赢!\n"); return(h_win); case 1: printf("用户赢!\n"); return(h_win); case 2: printf("计算机赢!\n"); return(c_win); } } main() { int computer,human,i=1; int c_win_n=0,h_win_n=0; int flag; srand((unsigned)time(NULL)); printf("石头、剪刀、布游戏\n"); while(1) { printf("\n计算机 %d :%d 用户\n",c_win_n,h_win_n); printf("第%d局:\n",i); computer=rand()%3; printf("请输入(石头-0,剪刀--1,布--2):"); scanf("%d",&human); flag=rps(computer,human); if(flag==1) c_win_n++; if(flag==-1) h_win_n++; if(c_win_n==3) { printf("\n计算机 %d :%d 用户\n",c_win_n,h_win_n); printf("计算机获胜!\n"); break; } if(h_win_n==3) { printf("\n计算机 %d :%d 用户\n",c_win_n,h_win_n); printf("用户获胜!\n"); break; } i++; } } wait(); } void f4() { int i,j; for(i=0;i<5;i++) { for(j=0;j<35-i;j++) printf(" "); for(j=0;j<2*i+1;j++) printf("*"); printf("\n"); } for(i=0;i<4;i++) { for(j=0;j<32+i;j++) printf(" "); for(j=0;j<7-2*i;j++) printf("*"); printf("\n"); } wait(); } void f5() { #define PI 3.1415926 #define M 8 #define N 14 void printchar(int a[][N]) { int i,j,k; float x,y; for(x=0;x<=360;x=x+15) { y=40+10*sin(x*PI/180); for(k=0;k<y;k++) printf(" "); printf("*"); printf("\n"); } for(i=0;i<M;i++) { for(j=0;j<N;j++) if(a[i][j]==1) printf("#"); else printf(" "); printf("\n"); } } main() { int a[M][N]={ 0,0,0,1,0,0,0,0,0,1,1,1,0,0, 0,0,1,1,0,0,0,0,1,0,0,0,1,0, 0,0,0,1,0,0,0,0,0,0,0,0,1,0, 0,0,0,1,0,0,0,0,0,0,0,1,0,0, 0,0,0,1,0,0,0,0,0,0,1,0,0,0, 0,0,0,1,0,0,0,0,0,1,0,0,0,0, 0,0,0,1,0,0,0,0,1,0,0,0,0,0, 0,1,1,1,1,1,0,1,1,1,1,1,1,0 }; printchar(a); } wait(); } void menu() { char choice; int f=1; do { printf("\n"); printf("------菜单------\n"); printf(" 1....温度对照表\n"); printf(" 2....加法练习\n"); printf(" 3....石头、剪刀、步游戏\n"); printf(" 4....菱形图案\n"); printf(" 5....sin图形及数字符号显示\n"); printf(" 0....退出\n"); printf("请选择[1/2/3/4/5/6/7/0]:"); choice=getche(); switch(choice) { case '1':f1(); break; case '2':f2(); break; case '3':f3(); break; case '4':f4(); break; case '5':f5(); break; case '0':f=0; break; } } while(f==1); } void mygets(char s[]) { char ch,*p=s; ch=getch(); while(ch!='\r') { printf("*"); *p=ch; p++; ch=getch(); } *p='\0'; } int login() { char user[10],pwd[10]; int i,f; for(i=1;i<=3;i++) { printf("账户:"); gets(user); printf("密码:"); mygets(pwd); if(!strcmp(user,"admin") && !strcmp(pwd,"123456")) { f=1; break; } else error(); } if(i>3) f=0; return(f); } main() { wellcome(); if(login()) menu(); else bye1(); bye2(); } ``` 结果出错。。。。 ![图片说明](https://img-ask.csdn.net/upload/201912/15/1576385070_394335.png)
希望在输入时不能用到fgets,我的代码有一点问题
题目描述 已知正整数n,n的范围是1—100。你要从键盘读入n个字符串,每个字符串的长度不确定,但是n个字符串的总长度不超过100000。你要利用字符指针数组将这n个字符串按照ASCII码顺序进行升序排序,然后再打印到屏幕上。字符串中可能包含ASCII码中的任意字符,每个字符串以换行符结束输入。 要求:不允许定义如char str[100][100000];这样的二维数组,因为会极大的浪费内存空间。你应定义char str[100000];这样的存储空间,将n个字符串连续的存储在一维字符空间内,然后将这n个字符串的起始位置保存在字符指针数组中,再进行排序操作。 输入与输出要求:输入一个正整数n,代表待排序字符串的个数,n不超过100,然后是n个字符串,每个字符串的长度不确定,但至少包含1个字符。n个字符串的总长度不会超过100000。输出排序后的n个字符串,每个字符串占一行。 程序运行效果: Sample 1: 4↙ Where there is hope ,there is a way.↙ Welcome Beijing.↙ Nice idea.↙ Have fun.↙ Have fun.↙ Nice idea.↙ Welcome Beijing.↙ Where there is hope ,there is a way.↙ #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char str[100000]; int n, i, j, k, len; scanf("%d", &n); getchar();//将回车键进行储存 char *substr[100];//n个字符数组指针 char *b; k=0;//k初始化 j=0;//j初始化 for(i=0;i<n;i++)//将全部字符串存入数组str[100000]中 ,第i行 { scanf("%c", &str[j]); substr[k]=&str[j];//将每行字符的开头字符存入第k个数组指针中 while(str[j]!='\n')//每一行的字符串是以回车键结束,遇到回车键即跳出循环,换下一行 { j++; scanf("%c", &str[j]); } k++;//进入下一个数组指针 getchar();//将换行键储存 } str[j]='\0'; i=0; for(i=0;i<n-1;i++)//运用冒泡排序将其从小到大重新排序 { for(j=0;j<n-1-i;j++) { if(strcmp(substr[j],substr[j+1])>1) { strcpy(b,substr[j]); strcpy(substr[j],substr[j+1]); strcpy(substr[j+1],b); } } } for(i=0;i<n;i++) { printf("%s", substr[i]); printf("\n"); } return 0; }
pyqt+Python两个类之间传值
class Ui_MainWindow的某个代码段 ``` def massage(self): print("按了啊") dir_choose, filetype = QFileDialog.getOpenFileName(self.model, "选取文件", "./", "All Files (*);;Excel Files (*.xls)") # 起始路径 if dir_choose == "": print("\n取消选择") return print("\n你选择的文件夹为:") print(dir_choose) self.model.setText(dir_choose) adaboost = Adaboosting() result=adaboost.demo(dir_choose) self.text1.setText("训练完成") self.model_result.setText(result) ``` 然后调用另一个类class Adaboosting的方法 ``` def demo(result): print("已进入到了内部函数") # result="text1.txt" from my_adaboosting_SVM_ROC import loadDataSet dataArr, LabelArr = loadDataSet(result) from my_adaboosting_SVM_ROC import adaBoostTrainDS weakClassArr, aggClassEst = adaBoostTrainDS(dataArr, LabelArr) from my_adaboosting_SVM_ROC import adaClassify predictions = adaClassify(dataArr, weakClassArr) errArr = np.mat(np.ones((len(dataArr), 1))) number=float(errArr[predictions != np.mat(LabelArr).T].sum() / len(dataArr) * 100) print('训练集的错误率:%.3f%%' % float(errArr[predictions != np.mat(LabelArr).T].sum() / len(dataArr) * 100)) return number ``` 但是这两类之间传值没实现,报错如下 Process finished with exit code -1073740791 (0xC0000409)
How many ways 怎么写呢
Problem Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量。 2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。 3.机器人不能在原地停留。 4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。 如上图,机器人一开始在(1,1)点,并拥有4单位能量,蓝色方块表示他所能到达的点,如果他在这次路径选择中选择的终点是(2,4) 点,当他到达(2,4)点时将拥有1单位的能量,并开始下一次路径选择,直到到达(6,6)点。 我们的问题是机器人有多少种方式从起点走到终点。这可能是一个很大的数,输出的结果对10000取模。 Input 第一行输入一个整数T,表示数据的组数。 对于每一组数据第一行输入两个整数n,m(1 <= n,m <= 100)。表示棋盘的大小。接下来输入n行,每行m个整数e(0 <= e < 20)。 Output 对于每一组数据输出方式总数对10000取模的结果. Sample Input 1 6 6 4 5 6 6 4 3 2 2 3 1 7 2 1 1 4 6 2 7 5 8 4 3 9 5 7 6 6 2 1 5 3 1 1 3 7 2 Sample Output 3948
C++无向图求唯一路径问题。
有N个点,任意两点之间有且仅有一条路径。 输入输出要求: 第1行输入点的总数N,接下来有N-1行输入,每行输入两个直接相连的点的编号(0~N-1),中间用空格分开。之后一行给出起始、结尾两点的编号。输出两点间的唯一路径。 比如: 输入: 3 1 3 1 2 2 3 输出: 213
这题不用数组只用for,while 循环该怎么做啊?
火锅火锅和火锅(10分) 题目内容: 众所周知,沫沫以火锅为生。在E8的聚餐活动中,他经常卖萌卖无辜领着大家吃火锅。。 有一天,沫沫听说学校附近的哺呷哺呷在某现充的赞助下有一个优惠活动,只需30软妹币,对每个客人,它会上N道菜,但是客人只能挑选其中连续上的一些菜。 于是他非常兴奋的拉着灰灰和渣渣去吃火锅去啦。 沫沫是一个十分挑食的人,所以他对每一道菜都有一个愉快度(当然因为他的挑食,某些事物的愉快度会是负数)。 为了让沫沫能非常愉快的享受这次聚餐,善解人意的灰灰和渣渣决定帮他计算,他们应该怎么选择菜才能使沫沫最开心地吃完这次聚餐。 输入格式: 第一行是一个整数T,(T <= 10)表示测试案例的个数 对于每个测试案例,第一行是一个整数N,( 1<=N <= 10000)表示菜的个数 接下来的N个数字,第i个数字si表示沫沫对第i道菜的愉快度。( -1000 <=si <= 1000) PS:由于CF又被血虐掉rating,所以沫沫的起始愉快度是0 PPS:沫沫完全可能得到一个为负值的愉快值, poor 沫沫。。 输出格式: 对于每个样例,输出一个数字,表示沫沫吃完之后愉快度的最大值。 HINT: 对于 5 6 -1 5 4 -7 我们选择6, -1, 5, 4这四道菜(注意必须是连续的,所以不能跳过-1) 做完后请思考,如果N的范围是1<=N<=100000呢? 输入样例: 2 5 6 -1 5 4 -7 7 0 6 -1 1 -6 7 -5
求问WinApi中输出字符串时如何控制无论字符串多长,始终位于中间?
请教一下各位 初学winapi,在要求输出一串字符串时,我用textout函数控制输出的起始位置 但是由于输出的字符串长度可能不等,无法控制使得整个字符串位于区域的中间? 请问各位怎么解决?
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载 点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队 译者 | 凯隐 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
4G EPS 第四代移动通信系统
目录 文章目录目录4G 与 LTE/EPCLTE/EPC 的架构E-UTRANE-UTRAN 协议栈eNodeBEPCMMES-GWP-GWHSSLTE/EPC 协议栈概览 4G 与 LTE/EPC 4G,即第四代移动通信系统,提供了 3G 不能满足的无线网络宽带化,主要提供数据(上网)业务。而 LTE(Long Term Evolution,长期演进技术)是电信领域用于手机及数据终端的高速无线通...
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问