判断回文数,不是回文数的话与倒序数相加

输入一个正整数,如果该数不是回文数,将该数与他的倒序数相加,若其和不是回文数,则重复上述步骤,一直到获得回文数为止,并将变换过程得到的值以列表形式输出

def is_palindrome(n): 
    return str(n) == str(n)[::-1]

n = int(input("请输入一个正整数:"))
ans_list = [] 
while not is_palindrome(n): 
    ans_list.append(n) 
    n = n + int(str(n)[::-1]) 
ans_list.append(n) 

print(ans_list) 

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7704168
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
  • 除此之外, 这篇博客: 克鲁斯卡尔算法中的 将图中边按照权值从小到大排列,然后从最小的边开始扫描,设置一个边的集合来记录,如果该边并入不构成回路的话,则将该边并入当前生成树。直到所有的边都检测完为止。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    using namespace std;
    #define MaxSize 100   // 顶点数目的最大值
    typedef char VertexType;  // 顶点的数据类型
    typedef int EdgeType;  // 整数表示权值
    
    typedef struct{
    	int a;  // 较小值的顶点
    	int b;  // 边的两个顶点
    	int weight;  // 边的权值
    }Edge;  // 边结构体
    
    typedef struct{
    	VertexType Vex[MaxSize];  // 顶点表
    	EdgeType Edge[MaxSize][MaxSize];  // 邻接矩阵
    	int vexnum, arcnum;  // 图的当前节点数和弧数
    }MGraph;
    
    Edge edges[MaxSize];
    void CreateGraph(MGraph *g){
    	int start;
    	int end;  
    	int weight;
    	cout << "请输入图的边数和顶点数(空格分隔):";
    	cin >> g->vexnum >> g->arcnum;
    	// 初始化顶点
    	for (int i = 0; i < g->vexnum; ++i){
    		cout << "请输入节点" << i << "的值(字符):";
    		cin >> g->Vex[i];
    	}
    
    	//初始化邻接矩阵
    	for (int i = 0; i < g->vexnum; ++i){
    		for (int j = 0; j < g->vexnum; ++j){
    			g->Edge[i][j] = 65536;  // 不可达
    		}
    	}
    	
    	for (int i = 0; i < g->arcnum / 2; ++i){
    		printf("请输入第%d段弧(i j)和权值:", i);
    		cin >> end >> start >> weight;
    		g->Edge[end][start] = weight;
    		g->Edge[start][end] = weight;
    		Edge temp;
    		if (start > end){
    			temp.a = end;
    			temp.b = start;
    		}
    		else{			
    			temp.a = start;
    			temp.b = end;
    		}
    		temp.weight = weight;
    		edges[i] = temp;
    	}
    }
    
    // 并查集
    int Find(int *parent, int x){  // 寻找根节点
    	while (parent[x] >= 0)
    		x = parent[x];
    	return x;
    }
    
    // 冒泡排序
    void sort(Edge e[],int len){
    	for (int i = 0; i < len; ++i){
    		for (int j = 0; j < len - 1 - i; ++j){
    			if (e[j].weight > e[j + 1].weight){
    				Edge temp = e[j];
    				e[j] = e[j + 1];
    				e[j + 1] = temp;
    			}
    		}
    	}
    }
    
    int parent[MaxSize];  // Edge edges[MaxSize];  // 边数组父亲顶点数组(并查集)
    
    void MiniSpanTree_Kruskal(MGraph g){
    	int n, m;
    	sort(edges, g.arcnum);
    	for (int i = 0; i < g.vexnum; ++i) parent[i] = -1;  // 初始化:各个顶点单独形成一个集合
    	for (int i = 0; i < g.arcnum; ++i){  // 扫描每一条边
    		n = Find(parent, edges[i].a);
    		m = Find(parent, edges[i].b);  // a-------->b
    		if (n != m){
    			parent[n] = m;  // 并操作,将n并入m中
    			// 作为生成树的一条边打印出来
    			cout << edges[i].a << "->" << edges[i].b<<" ";
    		}
    	}
    }
    
    void main(){
    	MGraph *g = new MGraph;
    	CreateGraph(g);
    	MiniSpanTree_Kruskal(*g);
    	system("pause");
    	return;
    }
    
  • 您还可以看一下 卢海强老师的软考信息系统项目管理师考试视频辅导课程课程中的 论文和案例分析讲解及复习方法介绍小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^