一道关于DFS的C++java编程题目目(部分和问题)

一道C++编程题目求解_百度知道
一道C++编程题目求解
希望能给个解答,即2和3,根据质因数个数为奇数还是偶数分成两个集合,谢谢,输入一个大于2的自然数.)因为刚开始学很多还是不明白,质因数为奇数个的集合元素个数是2,对它自身和所有比它小的大于2的自然数进行分解质因数,即4;质因数为偶数个的集合元素为1,输出的是这两个集合里面元素的个数。(比如输入4现在有一道C++编程的题目不会做……题目是这样的
提问者采纳
} printf(&如下供参考#include&cnt[1];i&ret&nbsp,&cnt[2]={0};
scanf(&=&nbsp,&&=&2;++;&a研究了一下 发现代码简化后 可不用判断质数的函数 效率可以更高 代码更简单 &nbsp,&nbsp.h&&i&i&i;
} } return&0,&i&&& int&}int&get_num(int&;cnt[0]); int&2;; while(a;&质因子奇数个数为%d!=1) {
for(i& int&%d&a;++) {
cnt[get_num(i)%2]++;
&=&=&a){ int&i;
if(a%i)&0; for(i&main(){ int&a);a; return&&int&偶数个数为%d\n&stdio
那个…不好意思,头文件stdio.h我还没学过,不太明白scanf和printf的意思……能只用iostream和vector来试试么?
提问者评价
ok 我看到了,谢谢~
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&&& c题:水题,依然不解释。只要情况考虑全就行。&&& d题:&&& 我当时比赛做完前三题之后,时间还剩下46分钟,稍微看了一下d我就去查人去了…&&& 没想到d竟然这么水。刚刚看看一下d,20分钟敲出来了,真狠我当初为什么不敲d!&&& 深搜图,找出以每个点为起始点,最长能走的步数maxx.&&& 然后寻找是否存在两个点,使得这两个点为起始点的时候,走路的过程中不回产生碰撞。&&& 如果找到了,输出maxx+maxx.&&& 否则,输出maxx+maxx-1;&&& #include&&& #include&&& #include&&& #include&&&&&& #define maxn 2200&&& #define INF &&& int maps[maxn][maxn];&&& int val[maxn][maxn];&&& int vis[maxn][maxn];&&& int st[maxn][maxn];&&& int xx[5]={0,0,1,-1};&&& int yy[5]={-1,1,0,0};&&& int n,m;&&& int pan(int x,int y)&&& {&&& if(x&1||x&n||y&1||y&m)return 0;&&& return 1;&&& }&&& int dfs(int x,int y)&&& {&&& if(pan(x,y)==0)return 0;&&& if(vis[x][y])return INF;&&& if(val[x][y]!=-1)&&& {&&& return val[x][y];&&& }&&& vis[x][y]=1;&&& if(maps[x][y]==-1)&&& {&&& vis[x][y]=0;&&& val[x][y]=0;&&& return 0;&&& }&&& else&&& {&&& int t=dfs(x+xx[maps[x][y]],y+yy[maps[x][y]])+1;&&& vis[x][y]=0;&&& val[x][y]=t;&&&&&& }&&& }&&& int dos(int x,int y,int step)&&& {&&& if(st[x][y]!=-1)&&& {&&& if(st[x][y]!=step||maps[x][y]==-1)return 1;&&& else return 0;&&& }&&& if(maps[x][y]==-1)&&& {&&& st[x][y]=&&& return 1;&&& }&&& else&&& {&&& st[x][y]=&&& return dos(x+xx[maps[x][y]],y+yy[maps[x][y]],step+1);&&& }&&& }&&& int main()&&& {&&& int i,j;&&& char str[19999];&&& while(~scanf("%d%d",&n,&m))&&& {&&& memset(val,-1,sizeof(val));&&& memset(vis,0,sizeof(vis));&&& memset(st,-1,sizeof(st));&&& for(i=1;i&=n;i++)&&& {&&& scanf("%s",str);&&& for(j=1;j&=m;j++)&&& {&&& if(str[j-1]=='#')maps[i][j]=-1;&&& else if(str[j-1]=='^')maps[i][j]=3;&&& else if(str[j-1]=='v')maps[i][j]=2;&&& else if(str[j-1]=='&')maps[i][j]=0;&&& else if(str[j-1]=='&')maps[i][j]=1;&&& }&&& }&&&&&& maxx=0;&&& for(i=1;i&=n;i++)&&& {&&& for(j=1;j&=m;j++)&&& {&&& if(val[i][j]!=-1)&&& if(maps[i][j]==-1)&&& int fs=dfs(i,j);&&& if(fs&=INF)&&& maxx=max(maxx,fs);&&& }&&& if(j&=m)&&& }&&& if(i&=n)&&& {&&& cout《"-1"&1)&&& {&&& cout&n)cout&
【】【】【】【】
ISBN编号:&8
出版时间:&2013-3
出版社:&中国人事出版社
定价:¥45 优惠价:¥45&&ISBN编号:&9
出版时间:&2013-4
出版社:&中国人事出版社
定价:¥45 优惠价:¥45&&
????????????
????????????
         Copyright ©
() All Rights Reserved一道关于DFS的C++编程题目(部分和问题)_百度知道
一道关于DFS的C++编程题目(部分和问题)
4部分和问题
(挑战程序设计竞赛)给定整数 a 1 ,7} k=15 输出 No -------------------------------------分割线----------------------------------------------------------------书上给出的部分解答、a n ,7} k=13 输出 Yes (13 = 2 + 4 + 7) 输入 n=4 a={1;
&#47。求大神帮忙解答下; 加上a[i]的情况
if (dfs(i + 1; 输入 int a[MAX_N];
else printf(&quot,使它们的和恰好为
&#47, k,2。-------------------------------------分割线----------------------------------------------------------------&#47,判断是否可以从中选出若干数;)。;&#47。 输入 n=4 a={1; 如果前n项都计算过了;n&&#47,然后对于i项之后的进行分支 bool dfs(int i,则返回sum是否与k相等
if (i == n) return sum == k, sum))
&#47,2, 0)) printf(& 已经从前i项得到了和Yes\ &#47,4;&#47。; }
void solve() {
if (dfs(0; 无论是否加上a[i]都不能凑成k就返回false
return false、…。;No\
&#47, int sum) {
/&#47, sum + a[i])) 不加上a[i]的情况
if (dfs(i + 1。表示 好糊涂啊啊啊;n&)、a 2 ;&#47
提问者采纳
/ for(i=0;;);int main(){ int i, &a[i]);n&quot, sum))
return 1; 如果前n项都计算过了;);n, sum+a[i]))
return 1;No\ } printf(& i++){
printf(&%d& 加上a[i]的情况 if(dfs(i+1.h&), &n),k,则返回sum是否与k相等 if(i==n)
return sum==k;/}/ 已经从前i项得到了和
scanf(&int dfs(;#define N 20int a[N]将书上给出的部分解答配上主函数就可以了啊;/?&quot,i), int sum):#include& else
printf(&Yes\;
return 0; / printf(&n=; 不加上a[i]的情况 if(dfs(i+1; if(dfs(0; scanf(& 无论是否加上a[i]都不能凑成k就返回false
return 0; /k=;%d& i&%d&/a[%d]=,然后对于i项之后的进行分支 int dfs(int i?&n& scanf(&quot, int sum) { &#47, &k), 0))
这个递归dfs还是不太理解...求解释下
提问者评价
其他类似问题
为您推荐:
dfs的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁一道简单的dfs题目,希望大牛帮我解决一下, 一道简单的dfs题目,希望大牛帮
一道简单的dfs题目,希望大牛帮我解决一下 -小明听说在果园里有一个金苹果,他知道金苹果的位子,但是小明很懒,他想知道他最少需要走几步才能摘到金苹果input给出2个整数n(n&=100)接下来是一张n*n的图,在图中‘.’表示道路,‘$’表示金苹果的位子,‘’表示水沟(小明不能穿过水沟),‘S’表示小明的位子。output输出小明想摘到金苹果需要走的步数。sample in5...$..............S..sample out9下面是我的搓代码,#include&stdio.h&#include&string.h&#include&stdlib.h&int dir[4][2]={{1,0},{0,-1},{-1,0},{0,1}};bool visited[105][105];char str[105][105];void dfs(int a,int b){ count++; visited[a][b]= if(str[a][b]=='$')
printf(&%d\n&,count); int x,y; for(i=0;i&4;i++) {
x=a+dir[i][0];
y=b+dir[i][1];
if(x&0||x&=n||y&0||y&=n||visited[x][y]||str[a][b]畅互扳就殖脚帮协爆茅=='')
} }}int main(){ int i,j; while(scanf(&%d&,&n)==1) {
memset(visited,false,sizeof(visited));
for(i=0;i&n;i++)
scanf(&%s&,str[i]);
for(i=0;i&n;i++)
for(j=0;j&n;j++)
if(str[i][j]=='S')
} } return 0;}我的答案输出来是16,希望大牛帮我在原来的代码上改一下怎么样变成对的 我还要努力啊 一道简单的dfs题目,希望大牛帮我解决一下
1. 这个问题不简单,是经典的算法问题――最短路径问题2. 你的代码改不成对的,至少不是简单改改就行的。因为整体思路就是错的。3. 我不能给你详细的讲解最短路径问题是怎么求解的,只能先指出一个你的错误:如果走进了死胡同,如何回退?怎么保证第一次找到的路就是最短的?4. 建议你找本算法书,看看最短路径问题的求解思路。无非两种:全路径遍历(深度优先)和动畅互扳就殖脚帮协爆茅态规划(广度优先)。在100×100的复杂度下,可以用全路径遍历。如果迷宫规模扩大到100K*100K,就要用动态规划解决。
我还是个四年级小学生呢!我怎么可能会帮你回答问题?
热心网友}

我要回帖

更多关于 java面向对象编程题目 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信