欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 编程资源 > 编程问答 >内容正文

编程问答

符号三角形 -凯发ag旗舰厅登录网址下载

发布时间:2024/10/5 编程问答 17 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 符号三角形 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

符号三角形的 第1行有n个由“ ”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是” “,2个异 号下面是”-“ 。计算有多少个不同的符号三角形,使其所含” “ 和”-“ 的个数相同 。 n=7时的1个符号三角形如下: 
- -  
- - - -  
- - 
- - 
- - 
- - 
 

input

每行1个正整数n <=24,n=0退出. 

output

n和符号三角形的个数. 

sample input

15 16 19 20 0

sample output

15 1896 16 5160 19 32757 20 59984

这道题应该用深搜去构造顶层,然后推算出其他的层,在推算的同时进行给其中一种符号的计数,最后判断该符号的数是不是总符号数的一半,剩下的一些细节(诸如符号总数是否可以整除2、如何在输入0时结束程序等)我就不解释了,不过代码里的注释中会有。

c 版本一

dfs

#include using namespace std; int n,total,sum; int word[30][30]; //存储符号的数组 void wxy() //函数名没有含义 {int x=n,y=0; //x用于枚举层数,y用于计算其它层负号个数while(x--) //枚举层数for(int i=1;i<=x;i ){word[x][i]=(word[x 1][i] word[x 1][i 1])%2; //定义第n-x 1层的第i个符号if(word[x][i]) y ; //若word[x][i]为负号,其它层负号个数加1}if(sum y==n*(n 1)/2/2) total ; //若负号的个数为符号总数的一半,情况数加1(运用了等差数列) } void dfs(int x) {for(int i=0;i<2;i ) //0为正号,1为负号{if(i) sum ; //给题目中顶层的负号计数word[n][x]=i; //定义顶层的第x个符号是正还是负if(x==n) wxy(); //若顶层的所有符号定义完毕,计算其它层的负号个数else dfs(x 1); //定义顶层的第x 1个符号if(i) sum--; //回溯} } main() {while(cin>>n&&n) //输入n,判断n为不为0{cout<c 版本二

水题

#include #include #include #include #include using namespace std; int n; int a[30][30];int main() {while(scanf("%d",&n)!=eof){if(n==0) break;//int ans=0;cout <c 版本三

这个应该会ole

#include #include #include #include #include using namespace std; int n; int a[30][30];int main() {while(scanf("%d",&n)!=eof){if(n==0) break;int ans=0;for(int i=0;i<1<>j & 1;if( a[0][j]==1) cnt1 ;if( a[0][j]==0) cnt0 ;//cout << a[0][n-j-1];}for(int k=1;k 

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的符号三角形的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图